@database Wildfire @$VER: Wildfire.guide V2.96 @node Main "Wildfire Documentation" ################################################################# # # # Wildfire - an Animation-System for the Amiga # # # # Copyright 1995-1997 WK-Artworks # # All rights reserved # # Unauthorized Duplication Prohibited # #---------------------------------------------------------------# # # # Documentation # # # ################################################################# @{" 1. Introduction " link introduction } @{" 11. Known Bugs " link Bugs } @{" 2. System Requirements " link requirements } @{" 12. Authors " link Authors } @{" 3. Installation " link installation } @{" 13. Copyright " link Copyright } @{" 4. Usage " link Usage } @{" 5. Technical information " link Technical } @{" 14. Developer-Information " link Developer } @{" 6. Main Documentation " link MainWindow } @{" 15. FAQ " link FAQ } @{" 7. Available Effects " link OperatorsWindow} @{" 8. PowerPlugs! " link PowerPlugs! } @{" 16. Shareware " link Shareware } @{" 9. The YAFA Player " link yp.guide/MAIN } @{" 17. Tutorials " link Tutorials } @{" 10. ARexx " link ARexx } @{" 18. Wildfire Demos " link Demos } Documentation-Authors : Andreas K ssner, Andreas Maschke Last Changes : Thursday 20-Mar-97 Version : 2.96 @endnode @remark TODO: @remark -Tutorials @remark -Developer-kit @node Introduction --------------------------------------------------------------------- Wildfire - where dreams become virtuality A Special Effect Program and many more --------------------------------------------------------------------- @{ub} Wildfire is not only another brandnew image-processing-program - it's a professional animation-processor with some really new concepts. It allows you for example the creation and processing of animations in several formats, the generation of time-dependant special-effects and the design of large projects containing several animations and frame-synchronized sound-effects. Because the common animation-formats on the Amiga have too many lacks or restrictions we have tried to create a better one: YAFA. This animation-format for example features many compression-methods and realtime-zooming. One of the outstanding features of Wildfire is the fact that it makes for you no difference if you apply changes to a whole animation or if you process only one image. A single image is only a very special case of an animation. In contrary to common image-processors you can use envelopes instead of plain numbers as effect-parameters. This makes the easy creation of time-dependant special-effects possible. So you haven't to fight against the "do"-loops in an ARexx-script to get an animation outside your image-processor anymore. All of the numerous effects can be arranged in any number and combination. Because the output of any of these effects can be one of the 8 tempory-buffers Wildfire allows you to PROGRAM IMAGES in an comfortable way ! Main Features: -fast and comfortable Converter: input: YAFA, ANIM5/7/8, mpeg, image-sequences output: YAFA, ANIM5/7/8, image-sequences -Preview for almost any operation -Project-Editor which allows the creation of large and complicated projects easily using the mouse -Effect-Generator featuring time-dependant parameters via envelopes -a stunning library of effect-PlugIns -some really new effects, real 3D-effects, lightsources -superposition of 3D-effects (PowerPlugs!) -(un)loading of PlugIns at any time -Envelope-Editor -Timecodes-Editor -Transition-Maker for easy creation of transitions between two animations -easy-to-use Player-interface -Filmstrips to simplify the perfect timimg of huge projects -AnimInfo-function displaying size-profiles etc. -fontsensitive GUI without MUI -internal gadget-toolbox which handles mathematical expressions instead of only plain numbers -calculator which allows for example the export of user-defined symbols to the gadgets in the whole-program -Drag&Go (using drag.gadget 0.2 Copyright 1996 J rg Kollmann, see bonus drawer!) -ARexx-port with about 400 commands -macros, custom-windows, docks -import of images from other programs -Developer-Kit (with working example) which allows you to create your own effect-PlugIns -and many more @endnode @node Requirements @{b}Requirements@{ub} @{u}Hardware@{uu} -Processor: 68020 -Graphics : AGA or gfx-board (The program may work with ECS but this is not recommended) -Memory : FastRAM is strongly recommended but actually not required Most of the effects (even transitions between two animations!) run on an standard 2 MB A1200! @{u}Software@{uu} -operation system V39 (3.0) -XPK compression system (xpkFAST recommended) The program was successfully tested on A1200 (030, 060) and A4000 (030, 040) with several disk and memory configurations. @endnode @node Installation @{b}Installation@{ub} Normally the installation is done by executing the supplied installer-script. If this doesn't work (sometimes the installer-program hangs up on my system) the installation can be done by hand easily. Just move all files extracted from the "Wildfire-Main"-archieve into one drawer, e.g. into a drawer called "Wildfire". After that locate the file "Wildfire.config" and move into "envarc:". That's it. @{b}File-Hierarchy@{ub} Wildfire +---system -private files | +---plugIns *PlugIns-rootdrawer | | +---operators operators for the processor | | +---general general PlugIns | | +---system preferences for all types of PlugIns | | \---savers savers and loaders | +---images *icons for the icon-manager | +---filmstrips *filmstrips for the Transition-Maker | \---help *some text-files +---alpha -alpha-images +---trash -temporary files +---expressions -expressions and symbols for the calculator +---profiles -size-profiles of animations +---YAFAOptions -YAFA-Compressor-settings +---annotations -annotations and text-files +---convolutions -matrix-settings for the Convolve-PlugIn +---doc -documentation and online-help-files +---envelopes -envelopes for the Processor +---filmstrips -Filmstrips +---images -Images +---macros -ARexx-Macros +---processes -Processor-scripts +---projects -Video-projects +---sessions -Converter-sessions +---variables -Variables for the Processor \---windows -Custom-windows @endnode @node Bugs @{b}Known bugs@{ub} -Sometimes the program may crash if you run out of memory -3D-operators: Sometimes the program hangs up if the camZ-value is smaller than the image-dimension. Such small values cause impressive views at some rotation- angles so no range-checking is done. @endnode @node Authors @{b}Wildfire, Parts of the YAFA-concept, Animations@{ub} Andreas Maschke (WK-Artworks) Zenkerstra 06108 Halle/Saale Germany EMail: epgbc@cluster1.urz.Uni-Halle.DE @{b}Player, YAFA-concept, Ideas@{ub} Michael Henke (Smack/Infect) Praetoriusstr. 1/205 06124 Halle/Saale Germany EMail: epgbd@cluster1.urz.Uni-Halle.DE @{b}Ideas, Documentation, Moral Support, Beta-Testing:@{ub} Andreas K ssner Bernard Krone Str. 15 48480 Spelle Germany Tel.: ++49(0)5977/939249 @endnode @node Copyright @{b}Copyright@{ub} The program WF is Copyright (c) 1996-97 WK-Artworks (Andreas Maschke). All rights reserved. Commercial use is prohibited, if you want to use it for commercial purposes you have to get an explicit permission from the @{"author" link Authors} first. Wildfire is released as @{" Shareware " link shareware}. There are two different versions: @{u}Unregistered Demo-Version:@{uu} It is allowed to charge a fee to recover distribution costs, but no profit may be made by selling or otherwise distributing the program. It is not allowed to distribute only parts of the package or a modified program. @{u}Regisered Version:@{uu} The unregistered version is turned into a registered one if you use a personalized key file that registered users receive from me. It's strictly forbidden to give the registered key file to other users ! Giving the key file to other users, using key files that you did not receive directly from me for your personal use is considered as an act of software piracy ! It is not allowed to disassemble or otherwise reverse engineer any part of one of the Wildfire-related programs. @{b}Disclaimer@{ub} No guarantee is given nor implied that this program is fit for any use. The program and the information within this text are provided on "AS-IS" basis. The entire risk as to its quality and performance is with the user. In no event will the author be liable for direct, indirect, incidental or consequential damages resulting from any defect in the program. The author reserves the right to make changes to the program or the documentation without notice. @endnode @node shareware @{b}Shareware@{ub} Because the demoversion has all features of the full version you can test everything before you decide to buy the program. The only restriction of the demoversion is the fact that all dynamically alloceated memory will be stored until you quit the program. This way gives you the possibibily to test all program-features before registering. The price for the full version of WildFire is 50,00 DM or 40,00 US-$. Just compare WildFire to other programs yourself and you will know what to do ... The price for @{" PowerPlugs!" link PowerPlugs!} is the same. If you already got registered for Wildfire and want to obtain PowerPlugs! separately you have to specify your serial-number which may be obtained from the @{" Info-Window " link InfoWindow} of the program. There are two possibilities to buy Wildfire and/or PowerPlugs!. @{b}1.@{ub} Send the money in a letter to: Andreas K ssner Bernard Krone Str. 15 48480 Spelle Germany Please write down your full NAME and ADDRESS and the COMPUTERTYPE you use. You`ll get the latest WildFire Version and your personal wildfire.library. Please write down where you got the Demo-Version from. @{b}2.@{ub} Send a letter to: Andreas K ssner Bernard Krone Str. 15 48480 Spelle Germany Please write down your full NAME and ADDRESS and COMPUTERTYPE you use. You`ll get the latest WildFire Version and your personal wildfire.library. Please write down where you got the Demo-Version from. Transfer the money to the following account: Bank : HYPO-BANK Halle/Saale BLZ : 8602 0880 KTO : 5100 1479 14 Owner : Andreas Maschke Please write as usage: Wildfire Registration Send your transfer-receipt inside the letter to A. K ssner. -------------------------- cut -------------------------- WildFire registration Name: ____________________________ Street: ____________________________ City: ____________________________ Country: ____________________________ Ser: ____________________________ Computertype: Amiga _________ OS-Version: _______________ Processor: 68___ ___ MHZ Coprocessor: _____ ___ MHZ Memory: ____ MB Fast ____ MB Chip HD-Space: ____ MB Zip/Syquest: ____ which type? _____________________ CD-ROM: ____ x speed Where did you got the demo version from? _______________________ Which is your current version? _______________________ Wildfire registration fee: 50,00 DM ____ or 40,00 US-$ ____ included in letter. ____ (yes/no) PowerPlugs! registration fee: 50,00 DM ____ or 40,00 US-$ ____ included in letter. ____ (yes/no) Money transferred to ____ (yes/no) Bank: HYPO-BANK Halle/Saale BLZ: 8602 0880 KTO: 5100 1479 14 Owner: Andreas Maschke please write as usage: Wildfire Registration Send your transfer-receipt inside the letter to A. K ssner! -------------------------- cut ------------------------------------ @endnode @node Usage @{b}Usage@{ub} The program can be directly started from the Workbench or by typing "wf [options]" in a shell-window. Most operations can be done both using the mouse and the keybord. There are no menus because the AGA-hardware is too slow to render pulldown-menus on a screen with 32 or more colors. But 16...64 colors are recommended using the preview-function which is one of the major features of the program. The other reason is the fact that Wildfire has too many functions to put them into menus without a very complex hierarchy. @{b}Options@{ub} -h : exit the program after displaying some informations -debug : turn on debug-output @endnode @remark /*************************************************************/ @remark /* @remark Main @remark */ @remark /*************************************************************/ @node MainWindow @{b}The Main-Window@{ub} After initialization Wildfire opens it's Main-Window on a screen of your choice. All major program parts like the Processor or the Preferences-Editor can be reached from within this Window. Because Wildfire has a lot of functions and windows there is a window-hierarchy. E.g., after closing the Converter-Window all subwindows like the PictureList-Window or the YAFAAnimOptions-Window are closed automatically. Because the Main-Window is on top of the hierarchy you can quit the program by closing it. Another function of the Main-Window is to act as an icon-manager like Workbench. For almost all files affected by the program like animations, envelopes, images, ... an icon is created automatically and placed on the Icon Area. After moving such an icon into another window a filetype-specific operation is performed. @{b}Functions:@{ub} @{" Converter " link ConverterWindow} @{" Projects " link ProjectsWindow} @{" Processor " link ProcessorWindow} @{" Player " link PlayerWindow} @{" TMaker " link TMakerWindow} @{" Preferences " link PreferencesWindow} @{" PlugIns " link PlugInsWindow} @{" Icon Area " link IconArea} @{" Icons " link IconsWindow} @{" DWA " link DWAWindow} @{" Log " link LogWindow} @{" Info " link InfoWindow} @{" Quit " QUIT} @{" Add " link IconFunctions} @{" Cleanup " link IconFunctions} @{" Reset " link IconFunctions} @{" Load " link IconFunctions} @{" Save " link IconFunctions} @endnode @node IconArea @{b}Icon Area@{ub} The Icon Area of the Main Window acts as a desktop. You can place, move or put files on it. There are four special icons which are initialized at startup automatically. If you drop a file-icon over one of these icons a filetype-specific operation is performed. Trashcan: To delete icons and files. The default is to delete the icons only. This behaviour can be changed from within the @{"Icons-Window" link IconsWindow}. Player: To play animations. Viewer: To display images. Editor: To edit or view textfiles. The external programs envoked can be specified from within the @{" Preferences-Window" link PreferencesWindow}. On the bottom of the Main-Window there some addional functions which deal with icons: @{" Add " link IconFunctions} @{" Cleanup " link IconFunctions} @{" Reset " IconFunctions} @{" Load " link IconFunctions} @{" Save " link IconFunctions} @endnode @node IconFunctions @{b}Add@{ub} Using this function you can put one or more external files on the desktop. For example you could select 20 images to drop them sequentially over the Viewer-icon and delete the ugly ones. @{b}Cleanup@{ub} After pressing this button the Icon Area is cleanup up. @{b}Reset@{ub} This function removes all file-icons from the desktop and puts the four special icons on it. @{b}Load@{ub} The Load-function restores a previous saved desktop. To make this operation as simple as possible a default filename is used. This filename can be changed from within the @{" Icons-Window " link IconsWindow}. @{b}Save@{ub} This saves the contents of the whole desktop as the file specified in the @{" Icons-Window " link IconsWindow}. @endnode @remark /*************************************************************/ @remark /* @remark Converter @remark */ @remark /*************************************************************/ @node ConverterWindow @{b}Introduction@{ub} The Converter is the program part which has to do the most hard jobs. It reads in a stream of data, performs some or many special effects on it and writes the results to harddisk. Unlike to common programs there is only a small difference for the user to perform easy or very complex operations. Example: 1. You want to convert a mpeg-animation into an IFF-Animation. This is easy. Selected the input- and the output-file, adjust the compression-parameters and press the "Convert"-button. 2. You want to scale down the input frames because you have not enough diskspace. This is easy. Just enable the Processor, open the Processor-Window and add a "Halve"-effect. That's all. 3. You want to convert only some of the images, e.g. frames 31...54. This is easy. Just open the CRange-window and enter these numbers. 4. You want to have a small animation in front of a large background. This is easy. Enable the processor and use a "LoadImage"- and a "Compose"-effect. That's all again. I could write thousand of such examples here - all of them where easy to realize. @{b}Converter-Window@{ub} @{u}Input@{uu} Type Select the type of input: "Animation", "SinglePictures" or "BlackFrames" Info Display some type-dependant information about the input-animation Related Options Open one of the optionswindows @{"PictureList" link PictureListWindow} or @{"BlackFrames" link BlackFramesWindow} depending on the type of input @{u}Output@{uu} Type Select the type of output: "YAFA", "ANIM", "SinglePictures" or "NIL:" Info Display some type-dependant information about the generated output-animation Related Options Open one of the optionswindows @{"YAFAOptions" link YAFAOptionsWindow}, @{"IFFOptions" link IFFOptionsWindow} or @{"SinglePictures" link SinglePicturesWindow} @{u}Options@{uu} Annotation Optional annotation string or file to include in a YAFA-animation Range Open the @{"CRange-Window" link CRangeWindow} to specify the range of the input-stream to be processed Preview Select the preview-type (none/window/screen) Processor Enable the Processor to modify the input-stream @{u}Operation@{uu} Save Session Save all options including the current window-settings and the Processor-settings as the specified session-file Load Session Restore a previously saved session Convert Start the converter All combinations of input- and output-streams are possible. A special case is input=output=SinglePictures. This feature is not obsolete, it allows you to create a sequence with numbered filenames from pictures having different locations. If you specify "NIL:" as output-stream no frames are written. This feature is especially usefull for testing complicated Processor-scripts. The Converter can be aborted at any time - in the most cased the cancelled output-stream will be usable. @endnode @node CRangeWindow @{b}CRange-Window@{ub} From within this window the range of the processed input-stream is specified. @{b}Functions@{ub} State Enable/disable the current range-settings From First frame To Last frame, if a negative value is specified the number of input-frames is decremented by this value Step Range-step, usefull for example to skip every 2nd frame Remove loop A preset to skip the looping frames of an IFF-animation If the range is disabled the whole input-stream is processed. @endnode @node IFFOptionsWindow @{b}IFFOptions-Window@{ub} This window let you select various settings for IFF-animations to be generated. @{b}Functions:@{ub} Related Options: Type Compression type Colormap Dynamic or static colormap Screenmode Screenmode used while playing the animation @endnode @node SinglePicturesWindow @{b}SinglePictures-Window@{ub} Using this window you can set up some options which affect the generation of single pictures. @{b}Functions:@{ub} Basename base-filename for the generated files, the frame-number will be appended in the format ".%04d", e.g. "ram:pic" -> "ram:pic.0001", "ram:pic.0002"... Shift Frames Value to add to the frame-number before generating the filename Screenmode Screenmode used while displaying the frames Type Toggles rendering on or off. @endnode @node YAFAOptionsWindow @{b}YAFAOptionsWindow@{ub} This window lets you adjust the various settings for YAFA-animations to be generated. @{b}Functions:@{ub} Image data Internal representation of the image-data Colormap Dynamic or static colormap Force Timecodes Force the creation of timecodes even they are all equal Speed Speed-preset for the Player (fps=50/speed on Pal) Post Compression Turn on xpk-post-compression Compressor Select xpk-compressor Mode Select xpk-compression-mode, see xpk references for more details Delta Compression Choose the type of delta compression UC-Frames Choose the number uncompressed delta-frames UC-Mode Choose the type of uncompressed delta-frames Analysis open the @{"Analysis-Window" link AnalysisWindow} to check out some predefined combinations of settings. Import Extract the settings from an external YAFA-animation Load Load a previous saved settings-file Save Save all YAFA-settings into a settings-file @endnode @node AnalysisWindow @{b}Analysis-Window@{ub} The functions of this window are useful if you have no idea about the meaning of the various parameters. It creates some animations using some predefined settings and displays the resulting size-profiles. After that the settings of the smallest generated animation is selected and can be applied to the YAFAOptions-Window. @{b}Functions:@{ub} Frames Number of frames generated for every test Run test Start the test Results Displays some informations like the output-size and the used settings for every generated animation Size Profile Displays a size-profile for every generated animation, the one of the selected animation is highlighted Use Apply the settings of the selected animation to the YAFAOptions-Window @endnode @node PictureListWindow @{b}PictureList-Window@{ub} The picturelist has many features to create and manipulate a list of pictures to be converted. @{b}Functions:@{ub} Add Add one or more pictures Add Reverse Add one or more pictures in reverse order Add Dir Add a whole directory Sort Sort the complete list Check Remove non-ILBM files and pictures that don't fit the first entry's dimensions (width, height, depth) from list, this functions makes only sense if the Processor is turned off Remove Remove selected item from list Remove Range Remove all items inside the selected range from the list Set Timecode Set the timecode for selected item Time Range Set timecodes for all items inside the specified range Show Display the selected picture Picture Info Display some informations about the selected item From First item of the range To Last item of the range Step Step of the range, e.g., a value of 2 skips every 2nd frame @endnode @node BlackFramesWindow @{b}BlackFrames-Window@{ub} The BlackFrames-Window is usefull if you want to render an animation using only Wildfire. An example would be a rotating cube with some pictures mapped on it. @{b}Functions@{ub} Frames Number of the frames to be generated Width Width of the frames Height Height of the frames The BlackFrames-stream is some kind of a simulation of a real picturelist or input-animation. The most important field is the number of frames. If the Processor-script doesn't use the generated input its recommended to make the size-values very small, e.g. 32x20. @endnode @remark /*************************************************************/ @remark /* @remark Projects @remark */ @remark /*************************************************************/ @node ProjectsWindow @{b}Projects-Window@{ub} The animation-projects created with this editor are arrangements of YAFA-animations and music modules, samples and executables. Projects are saved as text files which can played from within the @{"Player-Window" link PlayerWindow} or directly envoking the YAFA-Player "yp" with the "-batch"-option. Projects are the perfect choice if you want to create huge videos because the YAFA-system has the capability to play more small animations as one without any gaps. Another advantage is the fact that you can apply changes to such a project much easier than to a single huge animation. @{b}Functions:@{ub} @{u}Animations@{uu} Add Include a YAFA-animation (*) Kill Remove the selected animation from the list Replace Replace the selected file Up/Down Move selected item up/down in the list Local Range Specify the first first and last frame to be played Example: the selected animation has 100 frames 1, 100 - exactly one shot 11, 50 - skips first 10 frames, plays 40 frames 51, 250 - plays the complete animation exactly two times, start/end are moved by 50 frames Global Range Shows range as global frame numbers in the project Info Display some information about the selected animation and let you adjust some settings similar to the @{"Player-Window" link PlayerWindow} Filmstrip Open the @{"Filmstrip-Window" link FilmStripWindow} @{u}Sounds@{uu} Add The same like (*) for modules, samples or executables Kill Dito Replace Dito Global Range Set global frame numbers to start/stop playing selected sound. An executable will be started when the player reaches the start value. A special case is the range 0,0 for executables. These commands will be executed before the YAFA-Player shuts down intuition - so you can use commands that have an output (like a cd-player) Type specify the type of sound-effect Edit open one of the edit-windows @{"Module" link ModuleWindow}, @{"Sample" link SampleWindow} or @{"Command" link CommandWindow} @{u}Project@{uu} Frames Shows the number of frames the whole project consists of Play selected Play project starting with the selected item Play all Play the whole project Profile Open the @{"Profile-Window" link ProfileWindow} Identify Calculate animation and frame number from a global frame number Save All Save all frames played in the project using the picture basename specified in the @{"Converter" link ConverterWindow} Clear clear the whole project Project File select file to load/save @endnode @node ProfileWindow @{b}Profile-Window@{ub} The Profile-Windows is made to visualize the ranges of animations and sounds of a project. @{b}Functions@{ub} Animations Shows bars representing the global ranges of the animations Sounds The same for sound-effects Size-Profile Show a size-profile of the whole project Full View Scale the bars horizontally to fit the whole project in the window Lines Number of visible lines, the best choice depends on the used font Because the range of a particular animation effects the whole project it can not be changed from within this window. But you can set ranges of sound effects using the mouse: Left Button Drag startpoint Right Button Drag endpoint @endnode @node ModuleWindow @{b}Module-Window@{ub} This edit-window appears if the selected item is a protracker module which will be played with the internal player. @{b}Functions:@{ub} File Filename which can be changed here Test Hear the module Stop Stop playing @endnode @node SampleWindow @{b}Sample-Window@{ub} If the selected sound-effect is an IFF 8SVX sample this window appears. @{b}Functions:@{ub} File Filename which can be changed here Test Hear the sample Channel Select the audio channel (ignored when playing stereo samples) Repeat How often the sample is played, a value of 0 causes an endless loop Volume Adjust the volume Stop Stop playing @endnode @node CommandWindow @{b}Command-Window@{ub} This window is for editing commands. String The command you want to execute. You can type in whatever you want, e.g. "rx ARexx:EP_LoadModule.rexx Music:CUST.Electricity" or "CDPLAY 4" or "delete s:startup-sequence" Test To execute the command. @endnode @node FilmStripWindow @{b}Filmstrip-Window@{ub} From within this window you can create, modify and play filmstrips. A filmstrip is a small representation of a single animation or a whole project. Such filmstrips are for example played in the middle the TMaker-Window. @{b}Animation@{ub} Animation Filename of the animation or project to be converted From/To/Step Range changes the pictures which will be used for the film Width The width of the filmstrip Color Type of palette to be generated Update Start converting @{b}Film@{ub} Film Filename of the Filmstrip Rows/Cols Specifys the layout while displaying or playing Load/Save Load/save a filmstrip Play Play the selected filmstrip as movie, to change the speed use the numeric keys Append Append the selected filmstrip to the current (displayed) one @endnode @remark /*************************************************************/ @remark /* @remark Player @remark */ @remark /*************************************************************/ @node PlayerWindow @{b}PlayerWindow@{ub} This window acts as a GUI for the external animation players like the YAFA-Player "yp". Some of the functions are only available for YAFA-animations. @{b}Animation@{ub} File filename of a single animation or a Wildfire-project Display select the realtime-transformations done by the YAFA-Player Cache don't play YAFA-animations directly from harddisk FrameBuffers cache-buffer for the YAFA-player LoadBuffer load-buffer for the YAFA-player @{b}Information@{ub} Animation show type-specific informations about the selected animation Shortcuts show the shortcuts of the YAFA-player In case of YAFA- or IFF-animations a size-profile and some informations about the used compression is displayed. The @{" Timecodes-Window " link TimeCodesWindow} can be reached from this Window, too. @{b}Player@{ub} Output select the type of display for the YAFA-player Wait after setting this option the YAFA-Player waits for a SPACE-press before playing @endnode @node TimeCodesWindow @{b}TimeCodes-Window@{ub} This window allows you to modify the timecodes of YAFA- and IFF-animations. A special feature is importing/exporting files. This makes it possible to modify timecodes graphically using the @{" Envelope-Editor " link EnvelopeWindow}. @{b}Functions:@{ub} From, To, Step range to be modified Set Timecode set a single timecode Time Range change all timecodes inside the specified range Import import timecodes from a file saved by the Timecodes-Editor or from within the @{" EnvelopeAdvanced-Window " link EnvelopeAdvancedWindow} Export save the current timecodes to disk Show show the selected frame of the animation Play play the whole animation to test the changes @endnode @remark /*************************************************************/ @remark /* @remark TMaker @remark */ @remark /*************************************************************/ @node TMakerWindow @{b}TMaker-Window@{ub} The transition maker creates various predefined transitions between two animations also known as "wipes". This feature is very useful in conjunction with animation-projects. It's recommended to install the example-filmstrips which show two animations (called "A" and "B") and the selected transition from "A" into "B" (called "A->B") as small animations in the middle of the Transition-Window. The Filmstrip-Player is implemented as a background-task at low priority so no cpu-time is wasted. Because only YAFA-animations can be arranged in animation-projects only this output-format is supported yet. @{b}Functions:@{ub}: Input1 Input animation 1 Input2 Input animation 2 Output Output animation (the transition) Temp A directory used for the temporary files which will be created while rendering CreateEX If you have only the small installation of Wildfire without transition-filmstrips this button will create them for you. To test if you have the example transitions just enable the "Example"-option. After that three animations should appear in the middle of the window. If they doesn't you may create them by pressing the "CreateEX"-button. YAFAOpts Adjust the YAFA-compressor-options Preview Turn preview on/off Example Turn example-movies on/off Because this features runs at low priority it may be always switched on. Type Select the main type of transition Subtype Select the subtype of the selected transition CreateTemp Create the temporary files This files have to be generated only once for a pair of input-animations. So you can test various transitions very quickly. The "Convert"-function creates them automatically if necessary. KillTemp Deletes all temporary files. Play Play the animation-sequence "anim1 - transition - anim2" Convert Create the transition @endnode @remark /*************************************************************/ @remark /* @remark Preferences @remark */ @remark /*************************************************************/ @node PreferencesWindow @{b}Preferences-Window@{ub} The Preferences-Window lets you specify most of the program-settings and handle different settings for different purpose. All modified settings are active immediately - there are no "Use"- or "Cancel"- gadgets. @{b}Functions @{ub} ScreenType choose the type of the Wildfire-screen Screenmode choose the screenmode DisplayScreenmode choose the screenmode for displayed images ScreenFont select the font for the Wildfire screen IconManagerFont select the font for the Icon Manager ScreenColors select the colors for the wildfire screen Preset some color-presets. "WF (modern)" is the default Import load colors Export save colors PlayerScreen name of the public screen for the YAFA-Player DClickTime time for a double click Statistics turn on/off the generation of Player- and Converter-statistics Expertmode turn on/off safety-requesters BrutalBlit faster blitting OpenDWA open the @{" DWA-Window " link DWAWindow} at startup Paths open the Paths-Window Macros open the Macros-Window File the filename of the current Preferences-file Save save the current settings Load load the specified settings @{b}Paths-Window @{ub} From within this window the default paths for animations, pictures, ... and the external programs are specified. YAFA Player player for YAFA-animations (default: "c:yp") Anim Player player for ANIM-animations (default: "c:vt") MPEG-Player player for MPEG-anims (default: "c:mp") ImageProcessor external image-processor (default: "ADPro mm=1000000") Viewer image-displaying program (default: "c:visage") Editor text-editor (default: "c:ed") The "ImageProcessor"-setting is only used by the "ARexx"-Operator-PlugIn. @{b}Macros-Window@{ub} In this window the ARexx-macros executed after pressing on of the function-keys can be specified. Because there are only 10 function keys and maybe lots of macros the -key is reserved. After pressing it a filerequester appears and lets you select the macro to execute. @endnode @remark /*************************************************************/ @remark /* @remark Icons @remark */ @remark /*************************************************************/ @node IconsWindow @{b}Icons-Window@{ub} The Icons-Window has three major functions: changing filetypes of icons on the desktop, setting up of some desktop-specific options and creating of icons with nearly unlimited size and quality. @{b}Options:@{ub} File filename of the desktop-files Trashcan-Action lets you selected if you want to remove only icons or icons and files @{b}Icon-Saver:@{ub} Image1 filename of the first (normal) image of the icon to be generated Image2 optional 2nd image Icon icon-file to be generated Color sets the type of palette to be generated Width specified the icon-width, the height depends on the aspect of the 1st image Depth number of colors used for rendering Convert After pressing the convert-button the images are loaded, scaled and rendered using the current screen-palette. If you want to create icons for the Workbench you have open Wildfire on the Workbench-screen (temporary). If you want to create icons in high quality use a very high screen-depth and convert the created icons into NewIcons later. @{b}Change the filetype:@{ub} If Wildfire didn't recognise the type of an external file correctly you can change this type by simply dragging the icon into the Icon-Window. After that a requester displaying the current and the available filetypes will appear. @endnode @remark /*************************************************************/ @remark /* @remark DWA @remark */ @remark /*************************************************************/ @node DWAWindow @{b}DWA-Window@{ub} The DWA-Window allows you to access windows directly. This may help you to locate special functions in a faster way. After selecting a window and pressing the -key the selected window and all windows which are on top of it in the window-hierarchy are opened. If you set the "OpenDWA"-option in the @{"Preferences-Window" link PreferencesWindow} the DWA-Window will be opened at startup automatically. @endnode @remark /*************************************************************/ @remark /* @remark Log @remark */ @remark /*************************************************************/ @node LogWindow @{b}Log-Window@{ub} All statistics, warnings and some additional informations are collected and displayed in this window. Of course this feature can be turned off. @{b}Functions@{ub}: State toggle logfile-generation on/off Edit edit the logfile Delete delete the logfile Clear clear the logfile Load load the logfile Save save the logfile Verbose toggle verbose-mode on/off SaveAtExit toggle saving of the logfile at program-exit on/off @endnode @node InfoWindow @{b}Info-Window@{ub} This window displays some useful informations like the available memory, the date, the amount of currently allocated memory and program-informations. @endnode @remark /*************************************************************/ @remark /* @remark PlugIns @remark */ @remark /*************************************************************/ @node PlugInsWindow @{b}PlugIns-Window@{ub} The PlugIns-Window gives you control over external Wildfire-programs known as "General PlugIns". @{b}Functions@{ub} Add add one or more PlugIns Delete unload the selected PlugIn SavePrefs save the settings of a PlugIn Open activate the selected PlugIn Close deactivate a PlugIn The "SavePrefs"-function saves the PlugIn-state and some private-date. If the PlugIn was open while saving it will be activated next time automatically. @{b}Available PlugIns@{ub} @{" ColorWheel " link ColorWheelPlugIn} @{" Command " link CommandPlugIn} @{" ConvertImages " link ConvertImagesPlugIn} @{" CountPlugIns " link CountPlugInsPlugIn} @{" EPSSaver " link EPSSaverPlugIn} @{" GrabWindow " link GrabWindowPlugIn} @{" TileImage " link TileImagePlugIn} @{" SlideShow " link SlideShowPlugIn} @endnode @node ColorWheelPlugIn @{b}ColorWheel-PlugIn@{ub} The ColorWheel-PlugIn was made to simplify the selection of the right colors for the various operators. Just select a color of your choice and use the values indicated at the bottom of the window as effect-parameters. @endnode @node CommandPlugIn @{b}Command-PlugIn@{ub} The Command-PlugIn executes the supplied input-string as Wildfire-ARexx-command. This may be useful while creating complicated macros or simply to test out how a particular command works. @endnode @node ConvertImagesPlugIn @{b}ConvertImages-PlugIn@{ub} The ConvertImages-PlugIn converts a drawer of images keeping all filenames. No special-effects can be applied. This is for example useful if you have a drawer with lots of jpeg-, tiff-, iff-, ... images and you want them all in png-format. The file-tag can be specified using the "Extension"-gadget - if this field is left blank the filenames are not changed. The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of the Processor. @endnode @node CountPlugInsPlugIn @{b}CountPlugIns-PlugIn@{ub} The CountPlugIns-PlugIn shows some statistics about the initialized PlugIns including Operators, Savers and General PlugIns. This trivial thing was created as example for the developer- kit which will be available soon. @endnode @node EPSSaverPlugIn @{b}EPSSaver-PlugIn@{ub} The EPSSaver-PlugIn converts any picture which can be read by Wildfire into an eps-file which can be included into TeX-documents or directly processed by ghostscript. @{b}Functions:@{ub} Input input-image Output eps-file to be generated Resolution resolution in dpi Type output-type: Gray, Color or Black&White @{b}Notes:@{ub} 1. This PlugIn replaces my iff2eps-package. 2. The eps-files created by this PlugIn are uncompressed and therefore highly portable. 3. The eps-image will be centered on a normal A4-page automatically. @endnode @node SlideShowPlugIn @{b}SlideShow-PlugIn@{ub} The SlideShow-PlugIn allows you to create slideshows easily. There are many functions to create and modify a picture-list which can be loaded and saved. The slideshow is performed calling the external program "Visage" by Magnus Holmgren. This nice program is used because of it's capability of "loading while displaying". @{b}Functions:@{ub} Add add one or more images to the list AddDir add the contents of a whole drawer to the list From, To, Step picture-range Remove remove the selected picture from the list Remove Range remove all pictures inside the specified range from the list Delete delete the selected picture File file for loading/saving picture-lists Save save the current picture-list to disk Load load a previously saved picture-list Clear clear the current picture-list Show display the selected picture Delay pause between two images during the slideshow Go perform the slideshow The only way to abort the slideshow is to abort the viewer sequentially pressing the right mouse-button. The number of required mouseclicks depends on the length of the image-paths and the number of items in the picture-list. @endnode @node GrabWindowPlugIn @{b}GrabWindow-PlugIn@{ub} The GrabWindow-PlugIn saves the selected Window or screen to harddisk. The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of the Processor. @endnode @node TileImagePlugIn @{b}TileImage-PlugIn@{ub} The TileImage-PlugIn splits a specified image into small portions with the same size. The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of the Processor. @{b}Functions:@{ub} Input input-image Output base-filename of the generated particles xCount number of fragments in x-direction yCount number of fragments in y-direction @{b}Notes:@{ub} 1. Finally you will get xCount*yCount fragments with filenames like "output.0001", "output.0002", ... The counter runs from the left lower edge to the right upper edge (which may be important if you want to use the created images later) 2. the sum of the generated fragments must fit the image-size *exactly*. For example you can't subdivide an image of the dimensions 640x480 into 3x7 fragments 3. The idea for this PlugIn is really not mine ;) @endnode @remark /*************************************************************/ @remark /* @remark FAQ @remark */ @remark /*************************************************************/ @node FAQ @{b}Frequently Asked Questions@{ub} 1. Q: Is there a WWW-site for Wildfire ? A: Not yet. 2. Q: How to contact the author ? A: epgbc@cluster1.urz.Uni-Halle.DE 3. Q: The demo-version I have installed isn't capable to convert large animations because of ''eating'' too much memory. Is this only a ''feature'' of the Demo-version ? A: Yes, of course ! Wildfire has an own memory handler to simplify and speed up memory-allocations. The Demo-version has no free()-function, only the freeall()-function (which cleans up after program-exit) is available. 4. Q: I've tried out the demo-version and it crashes after a while. I can't convert animations with it because I haven't enough memory to finish any operation. In may opinion you are loosing potential customers using such a way of restricting the unregistered program version. It would be much better to print your logo to every generated image - nobody could use the program seriously without registering. A: This is no bad idea. In fact I had implemented this "feature" in a previous version. The problem is that it's too easy to patch for "sunday-crackers". The way I currently use requires much more knowledge than simply replacing code-lines of the disassembled binary with "nop"-statements. Another point is that I think that's not necessary to create complete animations to decide if Wildfire is worth registering or not. Many working features of the unregistered version are missing in much more expensive "commercial" software. 5. Q: Why did you release Wildfire as shareware ? It looks very professional. A: Well, Wildfire *IS* a professional piece of software. The main reason is the fact that Wildfire released as shareware is one of the programs with the best price/performance-ratio. If you release a program as "commercial product" a lot of money is spent for any other purpose than the program-development. A printed manual for example is very expensive to produce but the most people doesn't read manuals. Another advantage is the fast availability of free updates. Finally we couldn't find a distributor here in Germany because most of them sell their own gfx-software and the remaining ones are not professional. 6. Q: Wildfire asks for amigaguide.library V37 at startup - but I have installed it !!! A: Be sure your startup-sequence contains the following lines: assign libs: hd0:classes add adddatatypes flush (since OS3.1) This is necessary because the amigaguide.datatype and maybe some other components will be initialized while opening the system- libraries. (This means that the error-message which is produced by the startup-code I use is wrong.) 7. Q: Which assigns etc. are necessary to run your program ? A: Wildfire works after booting without startup-sequence if you enter the following lines: setpatch assign libs: hd0:classes add adddatatypes flush stack 10000 wf After that the most parts of the program (converting, processing images, playing animations) work without problems. The only "bad" thing I found is the online-help which is displayed as plain text. 8. Q: After installing the new main-program I get lots of "initialization errors" while loading the PlugIns - but SnoopDos doesn't display any LoadSeg-failure or similar. A: The "initialization error" occurs if version-number of the current PlugIn doesn't fit the version-number of the PlugIn-loader of the main-program. This means that all PlugIns you use are too old and cannot be used any more. The reason for this "nasty" behaviour is the fact that the internal "PlugIn-structure" has to be extended sometimes. @endnode @remark /*************************************************************/ @remark /* @remark Processor @remark */ @remark /*************************************************************/ @node ProcessorWindow @{b}Processor-Window@{ub} @{u}Introduction@{uu} The Processor is Wildfire's powerful image-processing engine which acts as a PlugIn between the Converter's input and output. If you have understood the basic @{" concept " link pcConcept} of this architecture it's easy for you to create almost any complicated or simple effect. @{b}Functions:@{ub} @{u}Process-script:@{uu} Add open the @{" Operators-Window " link OperatorsWindow} to append an operator to the list Kill kill the selected item Duplicate duplicate the selected item Import import one or more items from a previously saved Process-file Edit open the options-window of the selected Operator Up move the selected item up Down move the selected item down Visible/Hidden toggle if the current item remains visible if folding is enabled Folding toggle list-folding on/off Range the frame-range of the current Operator Folding is very nice feature creating very complex scripts. If a particular scene works you should hide it to work on the next one. A comment describing the hidden scene and the frame-range should be left visible. @{u}Options:@{uu} Mode color-mode for rendered images Dither dithering-method used rendering images Depth depth of rendered images CSkip number of colors not used rendering images, this may be useful for creating Workbench-backdrops Scale @{" Process-Scale-Value " link pcScale} 3DQuant @{" 3d-Quantization-Value " link pcQuant3D} Smooth toggle smoothing for various operators on/off Single Image open the @{" SinglePicture-Window " link SinglePictureWindow} to process single images Variables open the @{" Variables-Window " link VariablesWindow} to edit time-dependant animation-paramters Savers open the @{" Savers-Window " link SaversWindow} to select the Saver used while writing TrueColor-images Palette open the @{" Palette-Window " link PaletteWindow} to create a locked Palette Calculator open the @{" Calculator-Window " link CalculatorWindow} File filename used for loading/saving of Process-scripts Load load a previously saved Process-file Save save the Process-script, all Variables and the Palette as Process-file Clear clear the Process-script, all Variables keep unchanged @{b}Additional ShortCuts:@{ub} delete the selected list-item Test Process of the @{" SinglePicture-Window " link SinglePictureWindow} toggle @{" Preview " link ProcessorPreview} on/off , browse through the Process-list unfold item (if folding=off) unfold whole list after safety-requester (if folding=on) fold item @endnode @node pcConcept @{b}The concept@{ub} A normal animation-converter like MainActor reads in a input-stream of pictures and writes them as output-stream to harddisk. (The complicated process of (de)compressing various animation- formats is here neglected.) The Converter of Wildfire extends this simple concept by a PlugIn-architecture. You can "plug in" as many modifications between the input and the output as you want. These modifications are realized via Operators. For example this concept would allow to scale down animations "plugging in" a Halve-operator. A further extension is the usage of tempory buffers called "TEMP-buffers". Every Wildfire-PlugIn has at least two Parameters: the input- and the output-buffer. The "normal" buffer generated by the Converter is called "STREAM". There are 8 TEMP-buffers called "TEMP1"..."TEMP8". In this terms the process of halving an animation looks like this: input ->STREAM -> Halve -> STREAM I output This concept of TEMP-buffers is much more powerful. For example it allows you to create an animation which consists of the input- animation as gray background and as small colored foreground. In this case you would need a Scale-, a ColorToGray- and a Compose- PlugIn. The scheme would look like this: input ->STREAM -> Scale -> TEMP1 ) > Compose -> STREAM -> ColorToGray -> STREAM ) I output But this concept doesn't allow you very complicated effects like a jumping animation in front of a melting one. So a further extension is necessary: time-dependant animation- parameters. For example this allows you to create a spinning animation. All you need is a Rotate-PlugIn and a rotate-amount running from 0 to 360 degrees during the whole animation. Let's assume your animation has 120 frames. To convert it into a spinning one you have to "plug in" the Rotate-Operator, to create the Envelope describing the variation of the rotate-amount with the frame number and to "plug in" this Envelope into the Rotate-Operator. That's it. The Envelope consists of two points one at frame 0 with the value 0 and one at frame 120 with the value 360. Setting the value 0 at frame 0 which is never reached (the first frame is always 1) causes the creation of a looping animation. As said before, if you understood this concept you can do almost anything. Example: Compose four different animations after applying a Twirl-effect to the 1st, a Negative-effect to the 2nd, a Cube-effect to the 3rd and a Posterise-effect to the 4th one: input ->STREAM -> Twirl ->STREAM ) > Compose -> STREAM ) LoadImage ->TEMP1 -> Negative -> TEMP1 ) ) > Compose -> STREAM LoadImage -> TEMP1 -> Cube -> TEMP1 ) ) I > Compose -> TEMP1 ) output LoadImage -> TEMP2 -> Poszerise -> TEMP2 ) This example doesn't make any sense but demonstrates that the only limit is your own creativity. @endnode @node pcQuant3D @{b}3D-Quantization-value@{ub} This important parameter affects both the quality and the speed of the images created or modified by the various 3d-effects. The value specifies how many pixels are transformed like one point of the source-image. If this value is left to 1 the image is transformed pixel by pixel. Higher values cause the approximation of the image by quadrangles of the size specified by the 3D-Quantization-value. E.g., after specifiying a value of 3 the image is approximated by quadrangles of the size 3x3. The color of every quadrangle is computed from the 9 original pixel using an interpolation method. The result may look very bad but is displayed almost in realtime at fast machines. The main purpose of quantization values higher than 1 is to speed up the generation of previews while adjusting the many parameters. Another advantage may be the fact that the amount of memory required for the 3d-calculations decreases with increasing quantization-values at a power of 2. That means at a quantization value of 2 you need only 25 percent of the memory required for the full computation - but the image-quality will be almost the same. Smaller values cause the creation of more points using another interpolation method. This may be necessary after combining several 3D-effects which cause very large deformations. In this case a qantization value of 0.5 will cause the interpotion of every pixel by four quadrangles. This requires much more memory and computation time but will produce images at very high quality. @endnode @node pcScale @{b}Process-Scale-value@{ub} This harmless-looking option is a real mega-feature: It allows you to use Processor-scripts designed for a particular image-size to apply to images of other dimensions. Example: You have designed a large project of about 1000 frames processing images of a dimension 320x256. Now you want to create a preview-animation of the halve size. So simply set the Scale-value to 0.5. Due the nature of such feature there are some restrictions: *the current image-sequence must have the same aspect as the one the script was designed for *some very special operators cannot be used, e.g. the font-size of the Text-operator cannot be scaled contingously But the last point is no real restriction because these few operators can be replaced (temporarily). There is one very important thing you should always remember. After changing the Process-Scale-value all process-parameters which are in pixel-units are scaled. That may be cause very strange results if you use images with a dimension which doesn't fit this scale-value. Example: You use a scale-value of 0.5 and the same images the script was designed for. In this case all size-dependant are divided by 2. If you script for example contains a 3D-operator with a camZ-value of -800 this value will be reduced to -400. This will cause a very strange view if your image has a size of 640x480, the program may even hang up due the rendering of almost infinite large faces. So always don't forget to change the input-stream and not only the Process-Scale-value ! @endnode @node ProcessorPreview @{b}Preview-Window@{ub} The Preview is a very useful feature while testing complicated scripts. It applies the current-Process-script to a smaller version of the picture specified in the @{" SinglePicture-Window " link SinglePictureWindow}. The change of any parameter is visible in the Process-Window instantly (on fast machines). To abort the geneneration of the preview hold the left mouse-button. The width and depth of the preview can be specified from within the @{" SinglePicture-Window " link SinglePictureWindow}. A width of 160 and a depth of 4 is a should be always good choice. The original width of the input-image is displayed in the window title. This may be sometimes important adjusting size-dependant parameters. If you used a "normal" image-processor before you may have enjoyed the feature of graphically specifing parameters like dragging a rectangle for a Crop-effect. Such a feature isn't implemented into Wildfire because I had no idea of good concept yet. The problem is that all Operators of the Process-script are independant. That means that a Twirl-effects doesn't "know" about a Scale-effect executed before. And the Scale-effect doesn't "know" about about a CreateImage-effect executed before... A first attempt is the @{" ImageCoordinates-Window " link ImageCoordinatesWindow} which allows you to graphically modify some types of controls inside the Preview-Window. For example if you want to crop an image you may use the "Rectangle"-control and later copy the indicated coordinates to the options-window of the Crop-PlugIn. To disable a particular effect temporaray simply modify it's working range (especially the from-value). @{b}Shortcuts:@{ub} refresh the image (e.g. after aborting) open the @{" ImageCoordinates-Window " link ImageCoordinatesWindow} @endnode @node ImageCoordinatesWindow @{b}ImageCoordinatesWindow@{ub} The ImageCoordinates-Window is a first attempt to modify parameters graphically. There a some types of controls which can be dragged and modified using the mouse. All interesting values like image-coordinates or the radius of a circle are indicated and could be copied to the options-window of the selected PlugIn. @{b}Functions@{ub} Control-Type type of control: point : simple point, e.g. represting a upper-left edge of a image to be composed rect : e.g. representing a crop-region circle: e.g. representing the amount and the radius of a Twirl-effect Left,Top coordinates of the point (in coordiantes of the unscaled image), upper-left edge of the rectangle, centre of the circle, Right, Bottom lower-right edge of the rectangle Angle angle of the current drawn radius of the circle Radius radius of the circle @endnode @node SinglePictureWindow @{b}SinglePicture-Window@{ub} This window is made to process single images and to simplify the creation of complicated Processor-scripts. @{b}Functions:@{ub} Input input image, this field is by default initialized by Wildfire's intro-picture because it must be always filled Frame the current frame Frames number of frames, this value is only used as maximum for the scrollbar below Scrollbar another way to change the current frame number Test Process execute the current Processor-script using the current frame-number and display the result Screenmode select the screenmode used by the "Test Process"-function Apply Dimensions apply the dimensions of the current input-image to the selected operator, e.g. if the selected operator is a Twirl-effect the centre and the radius is set Preview toggle @{" Preview " link ProcessorPreview} on/off Width width of the preview Depth depth of the preview, if this value exceeds the screen-depth the screen is updated automatically Output output-image Save Image execute the current Processor-script using the current frame-number and save the result using the saver selected in the @{" Savers-Window " link SaversWindow} Save Rendered execute the current Processor-script using the current frame-number, render it using the settings made in the Processor-Window and save the result as ILBM-image @{b}Additional Shortcuts:@{ub} toggle @{" Preview " link ProcessorPreview} on/off Test Process , decrease/increase the current frame-number The useful - and -shortcuts are also available from within every Effect-window and the Processor-Window. @endnode @node VariablesWindow @{b}Variables-Window@{ub} From within the Variables-Window time-dependent animation-parameters are created, modified, loaded and saved. @{b}Functions:@{ub} Add add a variable Kill kill the selected Variable Rename rename the selected Variable Envelope open the @{" Envelope-Window " link EnvelopeWindow} to graphically edit the current variable File filenames used for loading/saving of variables Load load variables from a previously saved Variables-file Save save all variables to disk Clear clear all variables After clearing a Variable all informations about this Variable are lost - even in the Processor-script. @endnode @node SaversWindow @{b}Savers-Window@{ub} From within this window the Saver used for writing Truecolor-images is choosen. Most Savers offer an options-window which can be accessed from within the Savers-Window, too. Another purpose is to add or remove Saver-PlugIns. Saver-PlugIns contain both the save- and the load-functions for a particular image-format. Removing a Saver causes the loss of the capability to load and save images of this file-format. All unknown fileformats are handled via datatypes which is restricted to the operation of loading. Most Saver-PlugIns allow you to disable the loader-function explicitly. This may be necessary if the Wildfire-loader doesn't support a particular sub-format and you want to use datatypes. An example is the PNG-format with it's lots of options. There a many people saying "may xxx-datatype is the best, the greatest and the fastest". If this is also your opinion you may switch the loaders permanently off saving the prefs after disabling. (In fact it's nearly impossible to write a datatypes which operates faster than Wildfire because this program always was to designed to be fast and not to conserve memory.) @{b}Functions:@{ub} Add add an external Saver-PlugIn Delete delete the selected Saver-PlugIn SavePrefs save all of the options of the current PlugIn Options open the options-window of the selected Saver-PlugIn @{b}Available Savers@{ub} @{" ILBM " link ILBMSaver} @{" JPEG " link JPEGSaver} @{" PNG " link PNGSaver} @endnode @node ILBMSaver @{b}ILBM-Saver@{ub} This PlugIn saves and load images in the ILBM-format. @{b}Options:@{ub} Compression ByteRun1/Node Loader disable/enable the loader The choice of no compression is good for saving huge images (e.g. at 600dpi). In such cases there may be not enough memory to do any compression. @endnode @node JPEGSaver @{b}JPEG-Saver@{ub} This PlugIn saves and load images in the JPEG-format. @{b}Options:@{ub} Quality remaining image-quality in percent Format toggle Normal/Progressive-format Optimize toggle Huffman-table-optimizing on/off Output toggle TrueColor/GrayScale-output Loader disable/enable the loader In the most cases the TrueColor-Progressive-format should be the best choice. This PlugIn uses routines of the @{b}IJG JPEG Library@{ub} developed by @{b}The Independent JPEG Group.@{ub} @endnode @node PNGSaver @{b}PNG-Saver@{ub} This PlugIn saves and load images in the PNG-format. @{b}Options:@{ub} Format various formats are supported: 24Bit RGB : TrueColor-image 8Bit Color : rendered image in 256 colors (good GIF-replacement) 8Bit Gray : grayscale-image 4Bit color : rendered image in 16 colors Black&White: rendered Grayscale image in 2 colors Loader disable/enable the loader This PlugIn uses routines of the @{b}PNG Reference Library@{ub} developed by @{b}Group 42, Inc.@{ub} @endnode @node PaletteWindow @{b}Palette-Window@{ub} The Palette-Window lets you create, modify, load and save a locked Palette used by the Processor while rendering images. @{b}Functions:@{ub} File file to load/save palettes Load load the palette from the selected file, Save save the current palette to disk Red, Green, Blue values of the current selected palette-entry Copy duplicate the current color Exchange exchange two colors Spread create a color-transition between two colors Undo reset the last changed color to its previous value State toggle the state of the Palette Use make all performed changed permanent Cancel cancel all apllied changes If the state of the Palette is enabled it will be used for all forthcoming render-processes. This is very important if you want to create animations with locked colors using the Processor. If you use a screendepth smaller than 8 no change of Palette will be visible (indicated by changing screen-colors). In the other case while pressing the right mouse-button the normal screen-colors are used for the lower palette-entries which is important to locate gadgets. @endnode @node CalculatorWindow @{b}Calculator-Window@{ub} The Calculator-window is made to easily evaluate mathematical expressions and to define or view user-defined symbols. Most of Wildfire's gadgets allow you to enter mathematical expressions, too. The symbols defined from within the Calculator-Window can be accessed from this gadgets, too. @{b}Functions:@{ub} 1st string-gadget expression to evaluate Results shows the last three results Symbols list of all user-defined symbols, especially constants Load load symbols from a previously saved file Save save all symbols to disk To define a symbol enter it's name and optionally it's value, e.g. "a=sqrt(9)/2" initializes the symbol "a" with the value 1.5. Later you could enter the expression "a/2" into of the Processor-gadgets. If the corresponding value (e.g. a zoom-factor) is of type float it will be set to 0.75 otherwise it will be rounded to 1. @endnode @node EnvelopeWindow @{b}Envelope-Window@{ub} From within this window all time-dependent animation-parameters (called "Envelopes") are created and modified. An Envelope is a twodimensional curve with the frame-number as x-values and the animation-parameter as y-value. Therefore the x-values are always integer-values. If the framber-number of the Processor exceeds the range of an Envelope the first or last y-Value is used. This means if your Envelope only contains one point the y-value of this point is used for all frame-numbers. Most operations are made using the mouse. A point is selected by clicking on it. Moving the mouse while holding the left button causes the selected point to be dragged. The whole graph can be scrolled using the cursor-keys. @{b}Functions:@{ub} XRange the displayed x-range YRange the displayed y-range X the x-value (frame-number) of the selected point Y the y-value of the selected point Add Point add a point Kill Point kill a point Type change the type of the Envelope: Linear: connect two points by straight lines Spline: use a cubic spline interpolation to connect points Bezier: surround points by bezier-curves View All view the whole Envelope File filename to save/load Envelopes Load load a previously saved Envelope Save save the current Envelope to disk Use make all performed changes permanent Cancel discard all applied changes Advanced Options open the @{" EnvelopeAdvanced-Window " link EnvelopeAdvancedWindow} to perform more complex operations @endnode @node EnvelopeAdvancedWindow @{b}EnvelopeAdvanced-Window@{ub} From within this window seldom-used but very useful transformations are applied to Envelopes. @{b}Functions:@{ub} @{u}Point-Operations:@{uu} First, Last, Step point-range affected by transformations YValue x-value used by the transformation YValue y-value used by the transformation Scale scale the Envelope by the x- and y- value specified below Shift shift the Envelope by the x- and y- value specified below @{u}Evaluate Expression:@{uu} XMin, XMax, XStep x-range used for evaluating Expression mathematical expression as function of "x" Evaluate create an Envelope using the x-range as frame-numbers and the evaluated values as y-value @{u}Import/Export:@{uu} Load Curve load a 2D-data file used by plotting programs and convert it as an Envelope Save Curve save the current Envelope as 2D-datafile Load Timecodes load a previously saved Timecodes-file and convert it as an Envelope Save Timecodes save the current Envelope as a Timecodes-file used from within the @{"Timecodes-Window" link TimecodesWindow} @endnode @node OperatorsWindow @{b}Operators-Window@{ub} The Operators-Window opens after pressing the "Add"-button of the Processor-Window and allows you to select an operator which will be appended to your Processor-script. Another purpose is to add PlugIns to the internal database or to remove them. All operations can be done both using the mouse and the keyboard. Use the cursor-keys to browse through the lists and the -key to apply the selection. @{b}Functions:@{ub} Add to load one or more PlugIns from harddisk Delete to delete the selected PlugIn Select to append the selected operator to the Processor-script Cancel to cancel the selection @{b}Operator-PlugIns:@{ub} There are five basic types of Operator-PlugIns according to their purpose: @{b}Buffer:@{ub} modifying or creating buffers @{" Add " link opAdd } Add two images @{" Example " system "visage wf:doc/pictures/Add.pic"} @{" Compose " link opCompose } Compose two images @{" Example " system "visage wf:doc/pictures/Compose.pic"} @{" CreateImage " link opCreateImage } Create a colored image @{" Example " system "visage wf:doc/pictures/CreateImage.pic"} @{" Crop " link opCrop } Cut off a rectangular area of an image @{" KillTemp " link opKillTemp } Kill a TEMP-buffer @{" LoadImage " link opLoadImage } Load an image from harddisk @{" LoadTemp " link opLoadTemp } Copy a TEMP-buffer to the main stream @{" Plasma " link opPlasma } Create a colored image @{" Example " system "visage wf:doc/pictures/Plasma.pic"} @{" ReplaceComp " link opReplaceComp } Replace a color-channel of an image @{" Example " system "visage wf:doc/pictures/ReplaceComp.pic"} @{" SaveImage " link opSaveImage } Save an image to disk @{" SaveTemp " link opSaveTemp } Copy the main stream to a TEMP-buffer @{b}2D-F/X:@{ub} performing 2D-transformations @{" BlackHole " link opBlackHole } Deform an image @{" Example " system "visage wf:doc/pictures/BlackHole.pic"} @{" Bump " link opBump } Add a third dimension to an image @{" Example " system "visage wf:doc/pictures/Bump.pic"} @{" Cartesian2Polar " link opCartesian2Polar} Transform the coordinates of an image @{" Example " system "visage wf:doc/pictures/Cartesian2Polar.pic"} @{" Displace " link opDisplace } Randomly exchange points of an image @{" Example " system "visage wf:doc/pictures/Displace.pic"} @{" Flip " link opFlip } Mirror an image along various directions @{" Example " system "visage wf:doc/pictures/Flip.pic"} @{" Halve " link opHalve } Quickly halve the dimensionsions of an image @{" Magnet " link opMagnet } Deform the image @{" Example " system "visage wf:doc/pictures/Magnet.pic"} @{" MotionBlur " link opMotionBlur } Apply a touch of motion to an image @{" Example " system "visage wf:doc/pictures/MotionBlur.pic"} @{" Pixelize " link opPixelize } Reduce the resolution of an image @{" Example " system "visage wf:doc/pictures/Pixelize.pic"} @{" Roll " link opRoll } Scroll an image along every direction @{" Example " system "visage wf:doc/pictures/Roll.pic"} @{" Rotate " link opRotate } Rotate (a portion) of the image @{" Example " system "visage wf:doc/pictures/Rotate.pic"} @{" RotateBlur " link opRotateBlur } Apply a touch of motion to an image @{" Example " system "visage wf:doc/pictures/RotateBlur.pic"} @{" Scale " link opScale } Scale an image @{" Shear " link opShear } Shear the image @{" Example " system "visage wf:doc/pictures/Shear.pic"} @{" ShiftLines " link opShiftLines } Randomly shift the lines of an image @{" Example " system "visage wf:doc/pictures/ShiftLines.pic"} @{" Twirl " link opTwirl } Deform an image @{" Example " system "visage wf:doc/pictures/Twirl.pic"} @{" Wave " link opWave } Apply a harmonic 2D-Wave to the image @{" Example " system "visage wf:doc/pictures/Wave.pic"} @{b}Color:@{ub} applying color-transformations @{" Alpha " link opAlpha } Color Changes using an Alpha Channel @{" Example " system "visage wf:doc/pictures/Alpha.pic"} @{" Antique " link opAntique } Change the colors to look "antique" @{" Example " system "visage wf:doc/pictures/Antique.pic"} @{" Balancing " link opBalancing } Change the colors using Balancing @{" Example " system "visage wf:doc/pictures/Balancing.pic"} @{" ColorToGray " link opColorToGray } Convert an image into grayscale @{" Example " system "visage wf:doc/pictures/ColorToGray.pic"} @{" Convolve " link opConvolve } Apply a convolution-filter @{" Example " system "visage wf:doc/pictures/Convolve.pic"} @{" Emboss " link opEmboss } Change an image to look like made of stone @{" Example " system "visage wf:doc/pictures/Emboss.pic"} @{" LUT " link opLUT } Change the colors using a LookUpTable @{" Example " system "visage wf:doc/pictures/LUT.pic"} @{" MedianFilter " link opMedianFilter } Apply a medianfilter to an image @{" Negative " link opNegative } Turn dark portions into light portions @{" Example " system "visage wf:doc/pictures/Negative.pic"} @{" Noise " link opNoise } Apply random noise to an image @{" Example " system "visage wf:doc/pictures/Noise.pic"} @{" OilTransfer " link opOilTransfer } Change the image to look like "oilpainted" @{" Example " system "visage wf:doc/pictures/OilTransfer.pic"} @{" Posterise " link opPosterise } Reduce the color-information of an image @{" Example " system "visage wf:doc/pictures/Posterise.pic"} @{" SwapRGB " link opSwapRGB } Swap the color-components of an image @{" Example " system "visage wf:doc/pictures/SwapRGB.pic"} @{" Threshold " link opThreshold } Create alpha channels @{" Example " system "visage wf:doc/pictures/Threshold.pic"} @{b}3D-F/X:@{ub} performing complex 3D-transformations on 3D-temp-buffers or images @{" Bump3D " link opBump3D } Bump-mapping @{" Example " system "visage wf:doc/pictures/Bump3D.pic"} @{" Cube " link opCube } Wrap an image onto a cube @{" Example " system "visage wf:doc/pictures/Cube.pic"} @{" LWOB " link opLWOB } Load and draw Lightwave-objects @{" Example " system "visage wf:doc/pictures/LWOB.pic"} @{" Magnet3D " link opMagnet3D } Grab and drag portions of an image @{" Example " system "visage wf:doc/pictures/Magnet3D.pic"} @{" Perspective " link opPerspective } Add perspective to an image @{" Example " system "visage wf:doc/pictures/Perspective.pic"} @{" Sphere " link opSphere } Wrap an image onto a complete sphere @{" Example " system "visage wf:doc/pictures/Sphere.pic"} @{" Transform3D " link opTransform3D } Perform standard 3d-transformations @{" Example " system "visage wf:doc/pictures/Transform3D.pic"} @{" Twirl3D " link opTwirl3D } Apply a Twirl-effect along any axis @{" Example " system "visage wf:doc/pictures/Twirl3D.pic"} @{" Twist " link opTwist } Deform an image using rotation @{" Example " system "visage wf:doc/pictures/Twist.pic"} @{" Water " link opWater } Apply an anharmonic water-wave to an image @{" Example " system "visage wf:doc/pictures/Water.pic"} @{" Wave3D " link opWave3D } Apply a harmonic wave to an image @{" Example " system "visage wf:doc/pictures/Wave3D.pic"} @{" Wrap " link opWrap } Wrap the image on a sphere or a tube @{" Example " system "visage wf:doc/pictures/Wrap.pic"} @{b}Misc:@{ub} very special or seldom-used PlugIns @{" ARexx " link opARexx } Exchange images with other applications @{" Comment " link opComment } Add a comment to the Processor-script @{" Example " link opExample } Example for the developer-kit @{" Example " system "visage wf:doc/pictures/Example.pic"} @{" Raster " link opRaster } Apply a black raster to an image @{" Example " system "visage wf:doc/pictures/Raster.pic"} @{" Text " link opText } Render text using various styles @{" Example " system "visage wf:doc/pictures/Text.pic"} Note: After pressing one of the @{" Example " system "visage wf:Motivation2.jpg"}-buttons the program "visage" is started to display a corresponding example. @endnode @node opAdd @{b}Add-Operator@{ub} This operator adds or subtracts two images. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input1 STREAM, TEMP1, ..., TEMP8 1st source buffer Input2 STREAM, TEMP1, ..., TEMP8 2nd source buffer Output STREAM, TEMP1, ..., TEMP8 destination buffer Mode ADD, SUBTRACT add or subtract the images @endnode @node opCompose @{b}Compose-Operator@{ub} This operator composes two images using several genlock-methods and optionaly an alpha-channel. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Background STREAM, TEMP1, ..., TEMP8 background image Foreground STREAM, TEMP1, ..., TEMP8 foreground image Destination STREAM, TEMP1, ..., TEMP8 destination buffer Alpha NONE, STREAM, TEMP1, ..., TEMP8 optional alpha buffer Left pixels left edge of the foreground image Top pixels top edge of the foreground image Mix 0...100 transparency of the foreground image CentreX ON, OFF center the foreground horizontally CentreY ON, OFF center the foreground vertically Red1, 0...255 genlock-color 1 Green2, 0...255 Blue 0...255 Red2, 0...255 genlock-color 2 Green2, 0...255 Blue2 0...255 Genlock choose the type of genlock NONE no genlock SINGLE COLOR normal genlock using color 1 INRANGE extended genlock using all colors inside the range color1...color2 OUTRANGE extended genlock using all colors outside the range color1...color2 @endnode @node opCreateImage @{b}CreateImage-Operator@{ub} This operator creates an image with an optional color-transition. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Output STREAM, TEMP1, ..., TEMP8 output-buffer Width pixels width of the generated image Height pixels height of the generated image Palette (gadget) select one of the four edges Red, 0...255 color of the selected edge Green, 0...255 Blue 0...255 HCopy (gadget) copy the selected color horizontally VCopy (gadget) copy the selected color vertically HVCopy (gadget) apply the selected color to all four edges @endnode @node opCrop @{b}Crop-Operator@{ub} This operator cuts out a rectangular area of an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Output STREAM, TEMP1, ..., TEMP8 output buffer Left pixels left edge of the rectangle Top pixels top edge of the rectangle Width pixels width of the rectangle Height pixels height of the rectangle @endnode @node opKillTemp @{b}KillTemp-Operator@{ub} This operator clears a TEMP-buffer and frees it's memory. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Buffer TEMP1, ... TEMP8 TEMP-buffer to kill @endnode @node opLoadImage @{b}LoadImage-Operator@{ub} This operator loads an image or an image-sequence from disk. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Output STREAM, TEMP1, ..., TEMP8 output buffer Sequence string complete filename of an single image or base-filename of an image-sequence Loop integer length of the image-sequence Shift integer shift-value for the filenames of an image-sequence Show (gadget) show the selected image @endnode @node opLoadTemp @{b}LoadTemp-Operator@{ub} This operator replaces the input-stream with a TEMP-buffer. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Buffer TEMP1, ... TEMP8 TEMP-buffer which holds the image to apply @endnode @node opPlasma @{b}Plasma-Operator@{ub} This operator creates an image using a fractal algorithm. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Output STREAM, TEMP1, ..., TEMP8 output buffer Width pixels width of the generated image Height pixels height of the generated image Dimension integer fractal dimension which affects the smoothness of the fractal Seed integer parameter which affects the shape @endnode @node opReplaceComp @{b}ReplaceComp-Operator@{ub} This operator replaces a color-channel of an image with the red-channel of an other image. The main purpose of this PlugIn is to create Stereo-3D-Images. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input1 STREAM, TEMP1, ..., TEMP8 input buffer Input2 STREAM, TEMP1, ..., TEMP8 image which replaces the selected channel Output STREAM, TEMP1, ..., TEMP8 output buffer Component RED, GREEN, BLUE color-channel to replace @endnode @node opSaveImage @{b}SaveImage-Operator@{ub} This operator saves images to harddisk. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 image to save File string filename Numbering string C-formatstring, if this string is non-empty the current frame-number is appended to filename @endnode @node opSaveTemp @{b}SaveTemp-Operator@{ub} This operator copies the content of the input-stream to a TEMP-buffer. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Buffer TEMP1, ... TEMP8 Buffer to copy to @endnode @node opBlackHole @{b}BlackHole-Operator@{ub} This operator contracts the whole image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer CentreX, pixels centre of the effect CentreY pixels Amount pixels amount, large values may cause the whole image to disappear Radius pixels parameter affecting the local deformation Zoom -10.0...10.0 zoom-factor for the whole image @endnode @node opCartesian2Polar @{b}Cartesian2Polar-Operator@{ub} This operator transforms the cartesian image-coordinates into polar coordinates. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Output STREAM, TEMP1, ..., TEMP8 output buffer R0 pixels starting radius Phi0 degrees starting angle Zoom -10.0...10.0 zoom factor for the whole image @endnode @node opDisplace @{b}Displace-Operator@{ub} This operator swaps points of an image randomly. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Radius pixels largest distance between two points to swap Probability 0...100 probability of swapping in percent Seed integer start-value for the random number generator @endnode @node opFlip @{b}Flip-Operator@{ub} This operator mirrors an image along a specified axis. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Axis X, Y, XY mirror-axis @endnode @node opHalve @{b}Halve-Operator@{ub} This operator halves the dimensions of an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer @endnode @node opMagnet @{b}Magnet-Operator@{ub} This operator applies a local contraction or expansion to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer CentreX pixels centre of the effect CentreY pixels Amount pixels (about -20...20) amount of the deformation, positive values cause a contraction, negative an expansion Damping float parameter which controls the fall-off of the deformation Zoom -10.0...10.0 zoom-factor for the whole image @endnode @node opMotionBlur @{b}MotionBlur-Operator@{ub} This operator applies a touch of motion to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer DeltaX, pixels direction and amount of the effect DeltaY pixels @endnode @node opPixelize @{b}Pixelize-Operator@{ub} This operator reduces the resolution of an image creating rectangles. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Width pixels width of the rectangles to create Height pixels height of the rectangles to create Centre ON, OFF centre the rectangles, this options should be switched off if the size of the rectangle varies with time Grid OFF, XY, X, Y type of the optional grid to create Size pixels thickness of the grid to create Red, 0...255 base color of the grid Green, 0...255 Blue 0...255 DLeft, 0.0...1.0 color variation of the grid to produce DRight 0.0...1.0 a threedimensional look DTop 0.0...1.0 DBottom 0.0...1.0 @endnode @node opRoll @{b}Roll-Operator@{ub} This operator scrolls an image into a specified direction. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer DeltaX, pixels scroll direction and amount DeltaY pixels Wrap ON, OFF toggle wrapping on/off @endnode @node opRotate @{b}Rotate-Operator@{ub} This operator rotates a circular region of an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer CentreX, pixels centre of the circle CentreY pixels Radius pixels radius of the circle Amount degrees rotate-angle Zoom -10.0...10.0 zoom-factor for the rotated region @endnode @node opRotateBlur @{b}RotateBlur-Operator@{ub} This operator adds a touch of motion to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer CentreX, pixels centre of the blurred circle CentreY pixels Radius pixels radius of the circle Amount degrees blur-amount, large-values like 60 cause a very long computation time @endnode @node opScale @{b}Scale-Operator@{ub} This operator scales up or down images. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Width pixels/percent horizontal size of the generated image Height pixels/percent vertical size of the generated image Type PIXELS, PERCENT choose if the size-values are in pixels or percent Aspect choose if you want to keep the aspect or not IGNORE scale the image to the specified values TAKEWIDTH scale the image to the specified width-value and a computed height-value keeping the aspect TAKEHEIGHT scale the image to specified height-value and computed width-value keeping the aspect @endnode @node opShear @{b}Shear-Operator@{ub} This operator shears an image with additional damping. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer OriginX, pixels shear-centre where no damping occurs OriginY pixels Amount pixels shear-amount Zoom -10.0...10.0 zoom-value for the whole image Axis X, Y shear-direction Damping ON, OFF toggle damping on/off Damping float damping-value @endnode @node opShiftLines @{b}ShiftLines-Operator@{ub} This operator shifts the lines of an image with optional jitter-effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Direction X, Y shift-direction Jitter ON, OFF toggle jitter on/off Shift pixels shift-value Amount pixels jitter-amount Probability 0...100 probability for the jitter-effect Seed integer start -value for the random number generator @endnode @node opTwirl @{b}Twirl-Operator@{ub} This operator applies a nonlinear deformation to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer FallOff IN, OUT radial direction of the fall-off of the deformation CentreX, pixels centre of the effect CentreY pixels Radius pixels radius of the affected circular region of the image Amount degrees twirl amount, very large value like 1000 are allowed Power float parameter describing the local deformation, large values like 6.0 concentrate the deformation around the centre of the circle Zoom -10.0...10.0 zoom-factor for the affected circular region @endnode @node opWave @{b}Wave-Operator@{ub} This operator applies a harmonic wave to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer CentreX, pixels centre of the wave, the point CentreY pixels with no damping Amplitude pixels amplitude of the wave Phase degrees phase of the wave Wavelength pixels wavelength Shift pixels diagonal-shift-parameter Zoom -10.0...10.0 zoom-value for the whole image Damping ON, OFF toggle damping on/off Damping float damping-value Axis X, Y wave-direction Frame integer>0 current frame Frames integer>0 frame-number describing a whole cycle @endnode @node opAlpha @{b}Alpha-Operator@{ub} This operator modifies the brightness of an image using an alpha-channel. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Alpha STREAM, TEMP1, ..., TEMP8 alpha buffer Left pixels left edge of the alpha image Top pixels top edge of the alpha image @endnode @node opAntique @{b}Antique-Operator@{ub} This operator turns the colors of an image to look "anitique". @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer @endnode @node opBalancing @{b}Balancing-Operator@{ub} This operator performs some balancing operations. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Red -255...255 shift-value for the red component Green -255...255 shift-value for the green component Blue -255...255 shift-value for the green component Contrast -255...255 contrast-value, negative values decrease the contrast Bright -255...255 shift value for all color-channels Gamma -255...255 gamma-value @endnode @node opColorToGray @{b}ColorToGray-Operator@{ub} This operator converts an image into grayscale. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Weights weight of the red, green and blue component LUMINANCE use luminance weights AVERAGE use for all components the same weight CUSTOM use custom weights Red, 0...10000 custom weights, the sum of this Green, 0...10000 three values should be 10000 Blue 0...10000 @endnode @node opConvolve @{b}Convolve-Operator@{ub} This operator applies a 3x3- or 5x5 convolution-matrix to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Mix 0...100 intensity of the generated effect Shift -255...255 shift-value which is applied to the result for each pixel, this makes it for example possible to turn negative results into the valid range 0...255 without loosing details Size 3x3, 5x5 toggle the size of the matrix File string filename for loading/saving a matrix Load (gadget) load a matrix in Wildfire's or ADPro's format Save (gadget) save the current matrix to disk @endnode @node opEmboss @{b}Emboss-Operator@{ub} This operator converts an image in a gray relief @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Direction NORTHWEST, NORTHEAST, direction of the "lightsource", different SOUTHEST, SOUTHEAST directions may cause results looking extremely different @endnode @node opLUT @{b}LUT-Operator@{ub} This operator applies a LookUpTable to an image. Unlike to all other image-processors LUT's are represented by Envelopes and can be morphed ! There are 6 Envelopes: a Start- and an End-Envelope for every component. After specifying the number of frames the Start-Envelope is morphed into the End-Envelope. Different point-counts are possible. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Mode EDIT, VIEW toggle Edit/View-mode Type LINEAR, SPLINE, BEZIER type of the spline of the current channel Component R, G, B current component RGB (gadget) apply the current Envelope to all components Preset (may change) choose a preset Apply (gadget) apply the selected preset to the current component Position START, END modify the Start- or the End-Envelope Both (gadget) apply the Envelope of the current component as End- and as Start-Envelope Frames integer>0 number of frames used for morphing Frame integer>0 current frame displayed in view-mode MirrorX (gadget) mirror the current Envelope along the x-axis MirrorY (gadget) mirror the current Envelope along the y-axis MirrorXY (gadget) flip the current Envelope along the diagonal MoveX (gadget) shift the current Envelope by the specified amount in x-direction MoveY (gadget) shift the current Envelope by the specified amount in y-direction Amount integer shift-value File string file used for loading/saving envelopes Load (gadget) load an Envelope Save (gadget) save the current Envelope to disk There are two modes: the View- and the Edit-mode. In Edit-mode all changes are applied, in view mode the morphing of the splines is visualized. In this mode you can change the current-frame- number both using the scrollbar and the "Frame"-gadget. If you want to create your Envelopes using the @{"Envelope-Window" link EnvelopeWindow} the only restriction is that all values must be in the range 0..255. The first point must have the x-coordinate 0, the last one the coordinate 255. @endnode @node opMedianFilter @{b}MedianFilter-Operator@{ub} This operator applies a median-filter to the image. (In the most cases there will be no visible change.) @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Rect pixels size of the rectangle scanned for every pixel @endnode @node opNegative @{b}Negative-Operator@{ub} This operator turns the colors of an image into negative ones. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer @endnode @node opNoise @{b}Noise-Operator@{ub} This operator applies random noise to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Intensity color intensity of the noise Probability 0...100 noise-probability Seed integer start-value for the random number generator @endnode @node opOilTransfer @{b}OilTransfer-Operator@{ub} This operator applies the OilTransfer-algorithm to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Rect pixels size of the rectangle scanned for every pixel @endnode @node opPosterise @{b}Posterise-Operator@{ub} This operator reduces the number of bits per byte for every pixel of the image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Bits 1...7 number of bits per byte, a value of 8 would cause no change @endnode @node opSwapRGB @{b}SwapRGB-Operator@{ub} This operator swaps the color-channels of an image @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Mode RBG, GRB, GBR, BRG, BGR swap-mode @endnode @node opThreshold @{b}Threshold-Operator@{ub} This operator converts an image into black&white using a grayscale-level, this may be especially useful for the creation of alpha-channels. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Level 0...255 grayscale-level, all pixels with a brightness higher than this value are turned into white ones, all other are cleared @endnode @node opBump @{b}Bump-Operator@{ub} This operator uses a 2nd image to add height-information which is visualized using a single lightsoure to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer HeightMap STREAM, TEMP1, ..., TEMP8 image used to create the height-information Amount integer height-value corresponding to a brightness of 255 LightX, pixels coordinates of the lightsource LightY, pixels LightZ pixels Intensity float light-intensity (1.0=normal) Left pixels left edge of the height-map Top pixels top edge of the height-map @endnode @node opCube @{b}Cube-Operator@{ub} This operator wraps an image or a 3d-temp-buffer onto a cube. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Size pixels size of the cube The image is sliced into 6 parts (2 rows, 3 columns) which are mapped onto the six surfaces of the cube. To create a cube with 6 different images simply compose them together and use the result as input for the Cube-operator. To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opSphere @{b}Sphere-Operator@{ub} This operator wraps an image or 3d-temp-buffer onto a complete sphere. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Radius radius of the sphere (in pixels) To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opTwirl3D @{b}Twirl3D-Operator@{ub} This operator performs a Twirl-effect to an image or 3d-temp-buffer along a selected axis. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Axis X, Y, Z axis to rotate around Radius pixels twirl-radius Amount degress twirl amount, very large values like 1000 are allowed Power float parameter describing the local deformation, large values like 6 concentrate the deformation around the centre of the circle OriginX, pixels centre of the effect OriginY, pixels OriginZ pixels To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opTwist @{b}Twist-Operator@{ub} This operator rotates a image along a specified axis with varying rotation-angle to create a helix-like shape. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Axis X, Y, Z axis to rotate around Amount degrees maximum rotate-angle Dist pixels distance of the effect OriginX, pixels the point at which the rotation starts OriginY, pixels OriginZ pixels Negative Dist-values are allowed and cause the propagation along the opposite direction. To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opMagnet3D @{b}Magnet3D-Operator@{ub} This operator simulates the dragging of a point of the input-image or -3d-temp-buffer using a model of plasticity. This makes it possible to add a third dimension to selected parts of an image. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} SrcX, pixels coordinates of the point to drag SrcY, pixels SrcZ pixels DestX, pixels destination of the point DestY, pixels DestZ pixels Shape SMOOTH, SHARP selects the kind of deformation Strength float represents the elasticity of the material, larger values like 5.0 will cause the deformation of only a part of the object, small values like 0.1 will cause the deformation of the whole object To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opTransform3D @{b}Transform3D-Operator@{ub} This operator performs some standard 3d-transformations on images or 3d-temp-buffers. This makes it for example possible to deform a sphere into a lens or to apply other 3d-effects along any axis. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} ScaleX, -10.0...10.0 object-scaling ScaleY, -10.0...10.0 ScaleZ -10.0...10.0 TransX, pixels object-translation TransY, pixels TransZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle OriginX, pixels centre for scaling and rotating OriginY, pixels OriginZ pixels To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opBump3D @{b}Bump3D-Operator@{ub} This operator applies the grayscale-levels of a bump-map as z-values to an image or 3d-temp-buffer. For good results the bump-map should be very smooth. Such smooth images can be easily created using the @{" Convolve " link opConvolve}-Operator with the default 5x5 matrix. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} HeightMap STREAM, TEMP1, ..., TEMP8 bump-map Amount integer maximum height corresponding to a grayscale level of 255 Width pixels width of the bump-map Height pixels height of the bump-map OriginX pixels left edge of the bump-map OriginY pixels top edge of the bump-map To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opLWOB @{b}LWOB-Operator@{ub} This operator reads in a Lightwave-object and renders it using flat shading. The main purpose of this PlugIn is to produce preview images for object-catalogues. Therefore the filename can be plotted directly to the generated image and whole drawers can be processed easily. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided Text toggle the kind of text to be plotted to the image, OFF, no text will be generated, SMALL, plot the filename without the path, FULL plot the full filename with path Select Font (gadget) select the font for the generated string File string object-file or drawer to be scanned Width pixels width of the image to be created Height pixels height of the image to be created BGRed, 0...255 background color BGGreen, 0...255 BGBlue 0...255 TRed, 0...255 text color TGreen, 0...255 TBlue 0...255 To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". If the specified input-file cannot be found the path is scanned as drawer to create an alphabetically sorted filelist. Later the n-th item of this list is processed at frame n. See the @{" Tutorial " link Tutorials} for an example. @endnode @node opPerspective @{b}Perspective-Operator@{ub} This operator adds perspective to an image. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opWater @{b}Water-Operator@{ub} This operator applies a threedimensional anharmonic water-wave to an image. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Frame integer>0 current frame Frames integer>0 frame count describing a full cycle Times integer>0 number of rings, values in the range 1..3 are are always a good choice Rings integer>0 number of times the growing of rings is performed, after one cycle the 1st ring has the distance times*wavelength from the centre, values 2..10 give good results Axis direction of propagation, X, parallel to the x-axis, Y, parallel to the y-axis, XY, radial propagation Amplitude pixels wave-amplitude, this value should be always in the range 1..4 Wavelength pixels wavelength OriginX, pixels location of the wave-source OriginY pixels Damping ON, OFF toggle damping on/off Damping float damping-value moveXY ON, OFF specify if the deformation is applied to all components (x,y,z) or not. If this option is set there may occur some singularities ("bad points"), but this mode is very close to the reality. To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opWave3D @{b}Wave3D-Operator@{ub} This operator applies a harmonic wave in the threedimensional space to an image. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Frame integer>0 current frame Frames integer>0 number of frame describing a full cycle Amplitude pixels wave-amplitude Wavelength pixels wavelength Phase degrees phase Axis direction of propagation, X parallel to the x-axis Y parallel to the y-axis XY radial propagation in the xy-plane RADIAL radial propagation in the xyz-space OriginX, pixels position of the wave-source OriginY pixels Damping ON, OFF toggle damping on/off Damping float damping-value To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opWrap @{b}Wrap-Operator@{ub} This operator wraps an image onto a sphere or a tube. An unique feature is the deformation of "unwrapped" portions of the image in "RADIUS"-mode. Because this operator supports the @{" PowerPlugs!-concept " link PowerPlugs!} the parameters are splitted into two sections. The first section contains the render settings like the rotation-angle, the light-parameters or the camera-position. All this settings are disabled if the output-channel is a 3d-temp-buffer instead of an image-buffer. The second section contains the parameters of the particular effect. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8, input buffer TEMP3D1, ..., TEMP3D4 Ouput STREAM, TEMP1, ..., TEMP8, output buffer TEMP3D1, ..., TEMP3D4 TRender ON, OFF indicate that the transformed 3d-temp-buffer is used for the last time and can be modified directly to conserve both memory and time Zoom -10.0...10.0 zoom factor for the whole image CentreX, pixels centre for zooming and rotating CentreY pixels CamX, pixels camera-position CamY, pixels CamZ pixels Rotate XY, YZ, XZ, NONE axis-pair to rotate around/disable rotating Alpha degrees first rotation angle Beta degrees second rotation angle Light ON, OFF toggle light on/off LightX, pixels light-position Intensity float light-intensity (1.0=normal) Ambient 0.0...1.0 intensity of the ambient light Hardness 0.6...1.0 add gloss to the surface Faces NORMAL, DOUBLE draw the faces single- or double-sided To simplify the selection of the right view the camera-position is interpreted as follows. The (camX,camY)-pair causes a simple translation of the generated object into the xy-plane and the camZ-value only affects the perspective distortion. The object-size can be adjusted by the zoom-parameter. This makes it very easy to create effects starting from an untransformed image. The camZ-values must be always in the range -100...-10000. Small values like -200 cause "strange" views, large values like -1000 cause the generation of a nearly parallel view. The actual limits depend on the image-size but the preset-value of -800 should always produce a "normal 3d-look". Name Possible Values/Unit Description @{uu} Axis wrap axis, X, wrap the image onto a tube along the x-axis Y, wrap the image onto a tube along the y-axis XY, wrap the image onto a sphere OriginX, pixels origin of the sphere/tube OriginY prixels Amount 0...100 wrap-amount Radius pixels radius of the sphere or tube Method method used for wrapping, RADIUS, create a sphere/tube of the radius specified, wrap the image onto it and deform the unwrapped portions according to the shape AMOUNT create a sphere/tube to fit the whole wrapped image, the specified amount-value specifies the amount of wrapping in percent To speed up the generation of previews modify the @{" 3DQuant-parameter " link pcQuant3D} from within the Processor-Window. @endnode @node opARexx @{b}ARexx-Operator@{ub} This operator makes it possible to exchange images with other applications. The basic concept is to produce an ARexx-script which causes the application to load, process and save a temperary image created by Wildfire. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Port string ARexx-port of the application Temp-File string path for the temperorary image to be created Add (gadget) add a line to the ARexx-script Kill (gadget) kill the selected line Up (gadget) move the selected line up Down (gagget) move the selected line down Clear (gadget) clear the whole script Add Variable (gadget) add a variable-entry to the selected line Import (gadget) load a previously saved script Export (gadget) save the current script to disk A "normal" script should contain the three parts: -loading of the temporary image created by Wildfire -processing of this image -saving of the result The 3rd part is the only important. Every line of the script has to be entered in the format of a C-printf-command. This allows one to use Envelopes in such an ARexx-script. The basic syntax is as follows: "",arguments (The enclosing '"'-characters are important.) Three formats are supported: "%s" - for strings "%d" - for integer parameters "%f" - for float parameters The number of format-specifiers must be always equal to the number of arguments. Any special formats-strings like "%.4lf" are not supported. Examples: line to be entered: line generated by Wildfire: "integer: %d",10.3 integer: 10 "float: %f",10.3 float: 10.3 "i: %d, f: %f, s: '%s'",4,3,str i: 4, f: 3.0, s: 'str' To use an Envelope simply enter it's name as argument, rounding is performed if you specify "%d" as corresponding formatstring. The filename of the temporary image can be omitted using the predefined argument "tempfile". Now let's create a working example. Assume you want to have ADPro to halve your images and to apply an Antique-effect to the result. At first you have to set the path of your application (which will be started automatically if it's port cannot be located) from within the @{" Preferences-Window " link PreferencesWindow}. After that you have to specify the portname, in this case "ADPro". At first entry in the script you should specify ADPro's default Loader: "lformat "universal"" Now the image can be loaded "load '%s'",tempfile Apply the effects: "operator halve" "operator antique" Specify the the Saver to use: "sformat "iff"" Save the image: "save '%s' raw",tempfile That's all. Now you should save this script "lformat "universal"" "load '%s'",tempfile "operator halve" "operator antique" "sformat "iff"" "save '%s' raw",tempfile as "reference-script". For further purposes only the "operator"-lines have to be replaced. @endnode @node opComment @{b}Comment-Operator@{ub} This operator simply allows you to add comments to the Processor-script. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} String string the comment @endnode @node opExample @{b}Example-Operator@{ub} This operator acts as an example for the developer-kit. It turns all pixels which have a brightness larger than a specified value into grayscale. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer Switch1 MODEA1, MODEA2 not used Switch2 MODEB1, ..., MODEB4 not used IntVal1 integer not used IntVal2 0...255 grayscale-level FloatVal1 float not used FloatVal2 float not used @endnode @node opRaster @{b}Raster-Operator@{ub} This operator applies a black raster to an image. The main purpose of this PlugIn is to reduce the size of delta-compressed animations without loosing too much details. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Input STREAM, TEMP1, ..., TEMP8 input buffer Ouput STREAM, TEMP1, ..., TEMP8 output buffer @endnode @node opText @{b}Text-Operator@{ub} This operator renders text in various styles. Unlike to other programs whole text-files can be used and edited. @{b}Parameters@{ub} Name Possible Values/Unit Description @{uu} Ouput STREAM, TEMP1, ..., TEMP8 output buffer Style render-style NORMAL use the font without applying any changes, this method should be selected using color-fonts OUTLINE draw outlines of the selected font EMBOSS produce a threedimensional look Adjust LEFT, CENTERED, RIGHT text-adjustment, this setting has only an effect when plotting more than one line of text Red, 0...255 text-color Green, 0...255 Blue 0...255 BGRed, 0...255 background-color BGGreen, 0...255 BGBlue 0...255 Strength pixels thickness of the outline drawed around the text in OUTLINE- or EMBOSS-mode Intensity float light-intensity (1.0=normal) LightX, pixels light-position LightY, pixels LightZ pixels HSkip pixels additional space between two lines Select Font (gadget) select the font to use for all lines Add (gadget) add a line of text Kill (gadget) delete the selected line Up (gadget) move the selected line up Down (gadget) move the selected line down Clear (gadget) clear all lines of text Import (gadgt) import text from a file Export (gadget) save the current text to disk @endnode @NODE beispiele "5. Examples" @{b}5. Examples -----------------------------------------------------------------@{ub} (i) An animation will be displayed in negative colors and a smaller version of the anim will be placed in the right colors over the `negative` animation Scheme: *STREAM to negativ and save to TEMP1 *STREAM to halve and save to STREAM *Compose TEMP1 as background and STREAM as foreground and save to STREAM ARexx-Program: pc_add negative stream temp1 pc_add scale stream stream width/2 height/2 pc_add compose width/3 height/3 100 temp1 stream stream none NOTE: *The ARexx-notation is very useful. So you can take the examples as macros and you`ll learn how to use the ARexx port of Wildfire, too. *Of course you should try out the examples inside the program, first. Just start @{" WILDFIRE " link WildFire.guide/MAIN}, klick on the PROCESSOR-GADGET, and push the ADD BUTTON. Doubleclick on NEGATIVE and doubleclick on the NEGATIVE entry in the script. Now you can select STREAM as INPUT and TEMP1 as output. Do the needed things for the other 2 commands, too. *width and height are the height and the width of the animation or the single-pictures. With the ARexx commands "T_ANIMINFO" or "T_PICINFO" you can get the needed details. (ii) An animation will be placed on a colored background using a white border with shadow. Scheme: *create a colored background with width+80 and height+80 in "TEMP1" *create a white picture with width+20 and height+20 in "TEMP2" the border-size is 10 pixels (20/2) *create a black picture with width+20 and height+20 in "TEMP3" the border-size is 10 pixels, too *place the black picture on the colored background with offset 40x40 pixels *place the white picture on the colored background (now with the black picture on it) with offset 30x30 *all these things you have to do ONLY 1 time, the result-picture will be saved to buffer "TEMP1" and will NOT be changed anymore! So we can tell @{" Wildfire " link WildFire.guide/MAIN} that it has to do this effect only for the first frame! *every picture from the animation will be placed with offset 40x40 on the created colored picture with black and white border. ARexx-Programm: /* create background and save to TEMP1 */ pc_add createimage temp1 width+80 height+80 255 0 0 255 255 0 0 255 0 0 0 255 pc_add createimage temp2 width+20 height+20 255 255 255 255 255 255 255 255 255 255 255 255 pc_add createimage temp3 width+20 height+20 0 0 0 0 0 0 0 0 0 0 0 0 pc_add compose 40 40 100 temp1 temp3 temp1 none pc_add compose 30 30 100 temp1 temp2 temp1 none /* only do this operations at frame 1 */ pc_select createimage 1 pc_to 1 pc_select createimage 2 pc_to 1 pc_select createimage 3 pc_to 1 pc_select compose 1 pc_to 1 pc_select compose 2 pc_to 1 /* compose STREAM with TEMP1 for every animation-picture */ pc_add compose 40 40 100 temp1 stream stream none @ENDNODE @remark /*************************************************************/ @remark /* @remark Developer @remark */ @remark /*************************************************************/ @node Developer @{b}The YAFA-Format@{ub} If you want to develop your own YAFA-player or just want to support the YAFA-format from within your application you may have a look at the @{" YAFA-Format-Description " link YAFA-doc.guide/MAIN}. @{b}Wildfire-PlugIns@{ub} If you on the other side are interested in developing addional PlugIns (savers, operators or general PlugIns) for Wildfire please contact the author at "epgbc@cluster1.urz.Uni-Halle.DE". (If there are at leat 10 requests he will start to create a developer-kit including working examples and full documentation.) @endnode @remark /*************************************************************/ @remark /* @remark ARexx @remark */ @remark /*************************************************************/ @node ARexx @{b}The ARexx-port@{ub} The ARexx-port is another powerful feature of WildFire which allows you -to use all features from within other programs -to enhance the GUI with your own windows without -to write own ARexx-applications which operate like the program itself Example: You have designed a nice special effect like a transition between three animations or whatever. Now you want to integrate this nice feature into Wildfire as a "natural feature". This is easy ! All you have to do is to design a so-called "Custom-window" with buttons, string-gadgets, switches, ... and to write the procedure itself. @{b}Topics:@{ub} @{" Usage " LINK ARexxUsage} @{" Error-Messages " LINK ARexxErrors} @{" Custom-windows " LINK ARexxCWindows} @{" Commands " LINK ARexxCommands} @endnode @node ARexxUsage The name of the ARexx-port is equal to the name of the publicscreen opened by Wildfire. For the first running copy of the programm the port is named "Wildfire", for the second "Wildfire.1" and so on. I don't think that's very usefull to run more copies at one time - but it's possible. The command-hierarchy is equal to the window-hierarchy. This makes it very easy for you to find out the right name for a particular command. Every command consists of the hierarchy-identifier and the function-name, e.g. the "Play"-button of the Player-window is named "P_PLAY". Most of the arguments are strings or integer-values. It's recommended to enclose strings into "'"-characters otherwise they are converted to uppercase by the ARexx-system. There are three ways to invoke ARexx-commands: 1. scripts 1a) called as macros from Wildfire after pressing one of the function-keys 1b) started from a shell 2. direct commands 3. external programs Direct commands are nice to try out a special command, e.g., if you want to check out the "PL_APPENDDIR"-command you may type in a shell- window: rx "address 'Wildfire' pl_appenddir 'data:grafix/frames'" Another way to test single commands is to use the "Command"-PlugIn. An input string "pl_appenddir 'data:grafix/frames'" would cause the same result as the example shown above. The advantage of the use of the Command-PlugIn is the fact that it's faster because it doesn't use ARexx and displays the results of the in the same window. (ARexx-errors sometimes are cryptic.) @endnode @node ARexxCWindows Custom-windows are another powerful feature of Wildfire. You can create as much own windows as you want, they can be loaded, saved, opened, closed, deleted, ... at any time. So it's possible to create Toolmanager-like docks on the Wildfire-screen which can be loaded at startup. But the main purpose is to give you the possibility to enhance the program easily and to fit it to your needs. Window-elements ------------------------------------------------------------------- Custom windows can contain -buttons -string-gadgets -switches -lines -boxes and -texts. All these elements remain to the window as long as you don't kill them. But you have the possibility to apply graphical elements which are not stored as structures to the window. So you could create an own progress-bar or a function-plotter.. Attention: If you want to have spaces in you window- or gadget-names you have to use a special character (code 160). (This restriction is due the command-parsing.) Example: space='a0'x wnd="Transition.rexx" || space || "V0.3" Window-coordinates ------------------------------------------------------------------- Because Wildfire has a fontsensitve GUI you can't use absolute coordinates to specify window-elements. So you have to design your windows using a topaz.8-font to ensure that they look perfect for example with a times.24-font. If you want to design a very difficult window with 500 gadgets, 300 bevelboxes, ... it's seems to be no bad idea to use GadToolsBox . Using this nice program you can drag and size your gadgets in an easy way - just take down the coordinates after finishing it. A simple example ------------------------------------------------------------------- The following example called "ConvertPics.rexx" opens a window which lets you specify a range of your current picture-list and has a "Convert"-button. This makes is possible to convert only a small part of the picture-list which is very usefull if you want to test a very complex process. 1. Program-structure (i) create the window, initialize the parameters (ii) perform an endless loop receiving messages: 1. check for pressed gadgets -> start filerequester, read gadget-contents 2. check for the closegadget -> exit 3. check for the start-button -> check the parameters -> do it 2. Program /* Are we right ? */ if ~show('P','Wildfire') then do say " Error: The Wildfire-program must be started before executing this script." exit end /* Initialize the global variables */ address "Wildfire" options results wnd="Convert" from=1 to=1 /* Create the window */ cw_kill wnd cw_add wnd 309 70 /* Create the Gadget */ cw_addgadget wnd string 202 11 84 "From" cw_addgadget wnd string 202 27 84 "To" cw_addgadget wnd button 25 46 261 "Convert" /* It's important to open the window before setting the gadgets */ cw_open wnd cw_setgadget wnd "From" from cw_setgadget wnd "To" to /* main loop */ do forever /* check if the window is still open */ cw_isopen wnd qt=result /* no: leave the script */ if qt=0 then call cleanup /* wait for gadgets */ cw_wait wnd gadget=result /* which gadget was pressed */ if gadget="From" then do /* get the "from"-value from the gadget */ cw_getgadget wnd "From" from=result end else if gadget="To" then do /* get the "to"-value from the gadget */ cw_getgadget wnd "To" to=result end else if gadget="Convert" then do /* now let's do it */ c_convertpics from to end end cleanup: cw_kill wnd exit GadToolsBox is Copyright 1991-93 Jaba Development @endnode @node ARexxErrors There are 4 error-messages which will be shown together with the command in the default CON:-window: 1: wrong number of arguments 2: wrong arguments 3: unknown command 4: command failed Most of the commands are valid everywhere, but there are exeptions, e.g. if you haven't defined any variable you can't open the envelope-window. This would cause error 4. Normally you can access all program functions without opening any of the windows, but there are the following exceptions: -Timecodes-, AnimInfo-, Envelope- and EnvelopeAdvanced-commands require that the corresponding Window was opened (This is due the internal data-structure and no error or similar.) If the program executes an ARexx-command all requesters except the one invoked by the "M_MESSAGE"-command are turned off, but the requester-messages are shown in the Log-Window. @endnode @node ARexxCommands The command-list below shows all available commands, values enclosed into brackes are alternative keywords. Main: M_EXIT M_WAIT secs M_MESSAGE text M_REQUEST text (res=0: o.k.) M_OPENCONVERTER M_CLOSECONVERTER M_OPENPROCESSOR M_CLOSEPROCESSOR M_OPENEDITOR M_CLOSEEDITOR M_OPENPLAYER M_CLOSEPLAYER M_OPENPREFS M_CLOSEPREFS M_OPENINFO M_CLOSEINFO M_MOVE x y M_TOFRONT M_TOBACK M_OPENTMAKER M_CLOSETMAKER M_OPENIMOPTIONS M_CLOSEIMOPTIONS M_ADDICON file M_CLEANUP M_LOAD M_SAVE Tools: T_DELPICTURELIST T_GETNUMBER title [preset] T_GETSTRING title [preset] T_GETFILE title [preset] T_GETDRAWER titlee [preset] T_ANIMINFO name (0=o.k.) T_PICINFO name (0=o.k.) T_GETWIDTH T_GETHEIGHT T_GETDEPTH T_GETCOLORS T_GETFRAMES T_GETANIMDRAWER T_GETPICDRAWER T_GETMODDRAWER T_GETROOTDRAWER T_PEXTENSION extension T_REQSTATUS (ON|OFF) Prefs: PR_PLAYERSCREEN name PR_SCREENMODE id width height depth PR_SCREENDEPTH depth PR_LOADPREFS PR_SAVEPREFS PR_OPENPATHS PR_CLOSEPATHS PR_OPENMACROS PR_CLOSEMACROS PR_DCLICKTIME val PR_STATISTICS (ON|OFF) PR_EXPERTMODE (ON|OFF) PR_BRUTALBLIT (ON|OFF) PR_MOVE x y Paths: PT_ANIMATIONDRAWER name PT_PICTUREDRAWER name PT_SOUNDDRAWER name PT_ROOTDRAWER name PT_YAFAPLAYER name PT_ANIMPLAYER name PT_MPEGPLAYER name PT_VIEWER name PT_MOVE x y Info: I_FREEMEM I_MOVE x y Text: TXT_TEXT file TXT_TEXTNC file TXT_MOVE x y TXT_CLOSE TXT_WAIT TXT_CENTRE Player: P_FILE [name] P_BUFFERS num P_ABUFFER num P_DISPLAY (NORMAL|ZOOMED|DITHERED) P_CACHING (ON|OFF) P_OUTPUT (HARDWARE|WINDOW|BGWINDOW|SCREEN) P_WAIT (ON|OFF) P_PLAY [from to] P_MOVE x y P_OPENANIMINFO P_CLOSEANIMINFO P_OPENTIMECODES P_CLOSETIMECODES AnimInfo: AI_MOVE x y AI_EXPORT name AI_IMPORT num Timecodes: TC_RANGE from to step TC_IMPORT name TC_EXPORT name TC_TIMERANGE num TC_MOVE x y Editor: E_AADD name E_AKILL E_AREPLACE name E_AINFO E_ASELECT name E_ASELECTNEXT E_ASELECTPREV E_AFROM from E_ATO to E_AUP E_ADOWN E_MADD name (MODULE|SAMPLE|EXECUTABLE) E_MKILL E_MREPLACE name E_MEDIT E_MSELECT name E_MSELECTNEXT E_MSELECTPREV E_MUP E_MDOWN E_OPENPROFILE E_CLOSEPROFILE E_OPENFILMCONTROL E_CLOSEFILMCONTROL E_PLAYALL E_PLAYSEL E_SAVEALL E_FILENAME [name] E_CLEAR E_EXPORT E_LOAD E_SAVE E_INSERT file E_APPEND file E_MOVE x y EditorAnimInfo: EAI_DISPLAY (NORMAL|ZOOMED|DITHERED) EAI_CACHING (ON|OFF) EAI_BUFFERS num EAI_ABUFFER num EAI_SPEED num EAI_MOVE x y EAI_CLOSE ModuleOptions: MO_TEST MO_STOP MO_CLOSE MO_MOVE x y SampleOptions: SO_TEST SO_STOP SO_CHANNEL (LEFT0|RIGHT0|LEFT1|RIGHT1) SO_REPEAT num SO_VOLUME num SO_CLOSE SO_MOVE x y CommandOptions: CO_TEST CO_CLOSE CO_MOVE x y Processor: PC_ADD type [options] SCALE in out width height [(PIXELS|PERCENT) (IGNORE|TAKEWIDTH|TAKEHEIGHT)] CROP in out left top width height ALPHA in alpha out left top COMPOSE left top mix back=(STREAM|TEMPx) fore=(STREAM|TEMPx) dest=(STREAM|TEMPx) (NONE|COLOR|INRANGE|OUTRANGE) [red1 green1 blue1 [red2 green2 blue2]] BALANCING in out red green blue bright contrast gamma DISPLACE in out radius probability seed ROTATE in out centreX centreY radius amount zoom NEGATIVE in out COLORTOGRAY in out (AVERAGE|LUMINANCE|CUSTOM) [red] [green] [blue] SHIFTLINES in out (HORIZONTAL|VERTICAL) shift [(NORMAL|POSITIVE|NEGTIVE) amount probability seed] SAVETEMP buffer LOADTEMP buffer KILLTEMP buffer LOADIMAGE out sequence repeat shift CREATEIMAGE out width height [red0 green0 blue0 ... red3 green3 blue3] PIXELIZE in out width height (ON|OFF) [(XY|X|Y) size red green blue dLeft dRight dTop dBottom] CONVOLVE in out mix shift (file|matrix) TWIRL in out (IN|OUT) centreX centreY radius amount power zoom BUMP in heightMap out left top amount lightX lightY lightZ intensity TEXT out red green blue bgRed bgGreen bgBlue (NORMAL|OUTLINE|EMBOSS) (LEFT|RIGHT|CENTERED) hSkip font fontSize italic bold underline color textFile [strength [lightX lightY lightZ intensity]] ANTIQUE in out HALVE in out FLIP in out (X|Y|XY) MOTIONBLUR in out deltaX deltaY ROTATEBLUR in out centreX centreY amount radius BLACKHOLE in out centreX centreY amount radius MAGNET in out centreX centreY amount damping WAVE in out centreX centreY (X|Y) frames frame zoom damping (ON|OFF) amplitude wavelength phase shift AREXX in out port tempfile script COMMENT [string] PLASMA out width height dimension seed EMBOSS in out direction REPLACECOMP in1 in2 out (RED|GREEN|BLUE) OILTRANSFER in out rect MEDIANFILTER in out rect ADD in1 in2 out (ADD|SUBTRACT) RASTER in out SWAPRGB in out (RBG|GRB|GBR|BRG|BGR) NOISE in out intensity probability seed POSTERISE in out bits ROLL in out deltaX deltaY (ON|OFF) CARTESIAN2POLAR in out r0 phi0 PERSPECTIVE in out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient CUBE in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) lightX lightY lightZ intensity hardness ambient size WRAP in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient (RADIUS|AMOUNT) radius amount (X|Y|XY) WATER in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient frames frame (X|Y|XY) originX originY times rings amplitude wavelength (ON|OFF) damping doXY=(ON|OFF) WAVE3D in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient frames frame (X|Y|XY|RADIAL) originX originY originZ amplitude wavelength phase (ON|OFF) damping MAGNET3D in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient strength srcX srcY srcZ destX destY destZ SPHERE in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) lightX lightY lightZ intensity hardness ambient radius TRANSFORM3D in out (ON|OFF) centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient strength scaleX scaleY scaleZ transX transY transZ (XY|YZ|XZ|NONE) alpha beta originX originY originZ THRESHOLD in out level SHEAR in out originX originY amount (X|Y) zoom damping (ON|OFF) LWOB out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient file width height PC_KILL PC_CLEAR PC_SELECT type [which] PC_UP PC_DOWN PC_FROM num PC_TO num PC_STEP num PC_OPENEDIT PC_MOVEEDIT x y PC_CLOSEEDIT PC_MODE (COLOR|HAM6|HAM8) PC_DITHER (NONE|FS) PC_SMOOTHING (ON|OFF) PC_DEPTH num PC_CSKIP num PC_FILENAME [name] PC_LOAD PC_SAVE PC_OPENPCSINGLEPICTURE PC_CLOSEPCSINGLEPICTURE PC_OPENVARIABLES PC_CLOSEVARIABLES PC_OPENPALETTE PC_CLOSEPALETTE PC_MOVE Variables: V_ADD name V_SELECT name V_KILL V_RENAME V_SELECT name V_ENVELOPE V_FILENAME V_SAVE V_LOAD V_CLEAR V_MOVE Envelope: EV_XRANGE xmin xmax EV_YRANGE ymin ymax EV_VIEWALL EV_SCROLLUP EV_SCROLLDOWN EV_SCROLLLEFT EV_SCROLLRIGHT EV_SELECT num EV_SELECTNEXT EV_SELECTPREV EV_KILL EV_ADD xval yval EV_MOVE xval yval EV_DRAG xval yval steps EV_LOAD name EV_SAVE name EV_INTERPOLATION (SPLINE|BEZIER|LINEAR) EV_USE EV_CANCEL EV_OPENADVANCED EV_MOVE SinglePicture: PCS_INPUT name PCS_OUTPUT name PCS_TEST [time] PCS_SAVE PCS_SAVERENDERED PCS_APPLYDIMENSIONS PCS_FRAME num PCS_MOVE PCS_SCREENMODE id PCS_PREVIEWWIDTH val PCS_PREVIEWDEPTH val PCS_PREVIEW (ENABLED|DISABLED) EnvelopeAdvanced: EVA_RANGE from to step EVA_SCALE EVA_SHIFT EVA_LOADCURVE name EVA_SAVECURVE name EVA_LOADTIMECODES EVA_SAVETIMECODES EVA_XVAL val EVA_YVAL val EVA_CLOSE EVA_MOVE Converter: C_INPUTTYPE (ANIMATION|YAFAANIM|BLACKFRAMES) C_INPUTEXPORT C_INPUTFILENAME name C_OUTPUTTYPE (PICTURES|YAFAANIM|IFFANIM|NONE) C_OUTPUTEXPORT C_OUTPUTFILENAME name C_ANNOTATION (ON|OFF) C_ANNOFILENAME [name] C_ANNOSTRING [string] C_LOADSESSION C_SAVESESSION C_CONVERT C_CONVERTPICS first last C_OPENINPUTOPTIONS C_OPENOUTPUTOPTIONS C_CLOSEINPUTOPTIONS C_CLOSEOUTPUTOPTIONS C_PREVIEW (NONE|WINDOW|SCREEN) C_PROCESSOR (ENABLED|DISABLED) C_MOVE YAFAOptions: YO_IMAGEDATA (RAW|CHUNKY) YO_DELTA (NONE|BYTE|WORD|LONG|BYTEBR|WORDBR|LONGBR) YO_COMPRESSION (NONE|XPK) YO_COMPRESSOR name YO_MODE mode YO_COLORMAP (UNLOCKED|LOCKED) YO_SPEED num YO_FORCETIMECODES (ON|OFF) YO_OPENANALYSIS YO_MOVE YO_APPLY name Analysis: A_FRAMES num A_TEST A_USE A_CANCEL A_MOVE ANIMOptions: AO_TYPE (ANIM5|ANIM7S|ANIM7L) AO_COLORMAP (UNLOCKED|LOCKED) AO_SCREENMODE mode AO_MOVE PictureOptions: PO_BASENAME name PO_SCREENMODE mode PO_SHIFT num PO_MOVE PO_TYPE (RENDERED|TRUECOLOR) CreateFrames: CF_WIDTH num CF_HEIGHT num CF_FRAMES num PictureList: PL_INSERT names PL_APPEND names PL_INSERTDIR name PL_APPENDDIR name PL_DUPLICATE times PL_SORT PL_CHECK PL_RANGE from to step PL_REMOVERANGE PL_TIMERANGE num PL_SHOW PL_SELECT name [which] PL_SELECTNEXT PL_SELECTPREV PL_OPENPICTUREINFO PL_CLOSEPICTUREINFO PL_MOVE Custom-Windows: CW_CLOSE name CW_OPEN name CW_MOVE name x y CW_ADD name width height CW_KILL name CW_ADDGADGET window (STRING|BUTTON|SWITCH) left top width name [action] CW_GETGADGET window name CW_SETGADGET window name value CW_WAITGADGET window name CW_ADDTEXT window left top pen text CW_ADDLINE window x1 y1 x2 y2 pen CW_ADDRECT window left top width height pen (NORMAL|FILLED|BBOX|BBOX2) CW_DRAWTEXT window left top pen text CW_DRAWLINE window x1 y1 x2 y2 pen CW_DRAWRECT window left top width height pen (NORMAL|FILLED|BBOX|BBOX2) CW_SAVE name CW_LOAD name CW_WAIT name CW_ISOPEN name Palette: PP_FILENAME PP_LOAD PP_SAVE PP_COLOR color red green blue PP_STATE (ENABLED|DISABLED) PP_MOVE x y FilmStrip: FC_PLAY file loops rows cols [left top] FC_FILE file FC_FILMFILE file FC_RANGE from to step FC_WIDTH width FC_SIZE rows cols FC_COLOR (ORIGINAL|GRAY) FC_UPDATE FC_CLEANUP FC_LOAD FC_SAVE FC_CONVERT FC_APPEND FC_SCROLL val (negative->scroll left) CRange: CR_FROM num CR_TO num CR_STEP num CR_STATE (ENABLED|DISABLED) IMOptions: IM_RESET IM_FILE file IM_TRASHCAN (KILLICON|DELETE) Icon-Saver: IC_Image1 file IC_Image2 [file] IC_ICON file IC_WIDTH width IC_DEPTH depth IC_COLOR (COLOR|GRAY) IC_CONVERT TMaker: TM_INPUT1 file TM_INPUT2 file TM_OUTPUT file TM_TEMP drawer TM_FRAMES frames TM_PREVIEW (NONE|WINDOW|SCREEN) TM_SHOWEXAMPLE (ON|OFF) TM_TYPE type subtype TM_CREATETEMPFILES TM_KILLTEMPFILES TM_PLAY TM_CONVERT TM_CREATEEXAMPLES @endnode @node PowerPlugs! @{b}PowerPlugs! - it's not a dream @{ub} @{u}Introduction@{uu} @{" Example1 " system "visage wf:PowerPlugs!_01.jpg"} PowerPlugs! are a extended version of Wildfire's 3D-operators allowing the superposition of effects in the threedimensional space. For example after wrapping an image onto a cube a radial-wave could be applied to the cube. This is of course an incredible mega-feature many 3D-programs are missing. But many users may have no need for it because they have slow machines with only some memory or don't need any 3d-effect. So you have to register for the PowerPlugs!-package separately. The price is 50,00 DM or 40,00 US-$. I think this is quite fair for such unique features and makes it possible to keep the low price of the base-package. After registering you will receive an extended version of the "wildfire.library" which enables the handling of so-called "3D-temp-buffers". If you have installed the normal version of the library (registered or not) all 3D-operators are restricted to operate on image- buffers (STREAM and TEMP1, ..., TEMP8). After installing the extended PowerPlugs!-library four additional buffers can be used: TEMP3D1, ... TEMP3D4. @{u}Usage@{uu} @{" Example2 " system "visage wf:PowerPlugs!_02.jpg"} @{ub} The usage is quiet simple. If you specify a 3d-temp-buffer instead of an image the transformation is applied to a virtual object and not to an image. This means that all "final" transformation operations like rotating, scaling or adding light are not performed. 3d-temp-buffers can be specified both as input and output. Example: You want to linearcombine two simple waves. Add a Wave3D-effect and set the originX-value to 60. Set the output-buffer to TEMP3D1. Add a second Wave3D-effect and sets it's originX-value to 260. Set the input-buffer to TEMP3D1. So what happens ? The image is read and deformed by the first Wave3D-operator but not rotated, scaled or rendered. The result is read in by the second Wave3D-operator, deformed, rotated and rendered. @{u}Operators@{uu} The following operators support the PowerPlugs!-concept and can therefore combined in any manner: @{" Bump3D " link opBump3D } Bump-mapping @{" Example " system "visage wf:doc/pictures/Bump3D.pic"} @{" Cube " link opCube } Wrap an image onto a cube @{" Example " system "visage wf:doc/pictures/Cube.pic"} @{" Magnet3D " link opMagnet3D } Grab and drag portions of an image @{" Example " system "visage wf:doc/pictures/Magnet3D.pic"} @{" Sphere " link opSphere } Wrap an image onto a complete sphere @{" Example " system "visage wf:doc/pictures/Sphere.pic"} @{" Transform3D " link opTransform3D } Perform standard 3d-transformations @{" Example " system "visage wf:doc/pictures/Transform3D.pic"} @{" Twirl3D " link opTwirl3D } Apply a Twirl-effect along any axis @{" Example " system "visage wf:doc/pictures/Twirl3D.pic"} @{" Twist " link opTwist } Deform an image using rotation @{" Example " system "visage wf:doc/pictures/Twist.pic"} @{" Water " link opWater } Apply an anharmonic water-wave to an image @{" Example " system "visage wf:doc/pictures/Water.pic"} @{" Wave3D " link opWave3D } Apply a harmonic wave to an image @{" Example " system "visage wf:doc/pictures/Wave3D.pic"} @{" Wrap " link opWrap } Wrap the image on a sphere or a tube @{" Example " system "visage wf:doc/pictures/Wrap.pic"} You may ask "Only ten of them ?". So have a look at the example-pictures again @{" Example1 again " system "visage wf:PowerPlugs!_01.jpg"} @{" Example2 again " system "visage wf:PowerPlugs!_02.jpg"} and keep in mind that all parameters may be animated easily and any number of these operators can be combinated in any manner. @{" I'm impressed ! " system "visage wf:Motivation2.jpg"} @endnode @remark /*************************************************************/ @remark /* @remark Tutorials @remark */ @remark /*************************************************************/ @node Tutorials ############################################################################### # # # Sequencer-Tutorial 1 # # # ############################################################################### @{" 1. Introduction " LINK Tut1-Intro} @{" 2. Hardware-Requirements " LINK Tut1-Req} @{" 3. Tutorial 1 " LINK Tut1} @ENDNODE @NODE Tut1-Intro "1. Introduction" Welcome to the Sequencer Tutorial! This workshop will show you the fantastic possibilities of the Image Processor! You won`t trust your eyes when you see what you can do with this great program. As we are using the great BUILD-FROM-BLOCKS-concept you can change the project in an easy way to fit your personal needs. First inform yourself about the @{" Hardware Requirements " LINK Tut1-Req}! @ENDNODE @NODE Tut1-Req "2. Hardware Requirements" While installation you can choose between two different versions of this tutorial, depending on the hardware you use! "HALVE_SIZE" is aimed on users with something like the following configuration: CPU: MC68020/MC68030 RAM: 4 MB Fast, 2 MB Chip HD: 120 MB about 10 MB free Harddisk-space! The "HALVE_SIZE" tutorial even runs on STANDARD A1200 with only 2MB Chip Ram and no Fast Ram! The "NORMAL_SIZE" version of this tutorial can be used by the ones with more extended hardware like: CPU: MC68040/MC68060 RAM: 8 MB Fast, 2 MB Chip HD: 1 GB about 25 MB free Harddisk-space! Of course you don`t have to follow this rules, you may use the "NORMAL_SIZE" on an slow A1200 with 4MB Fast, too. Now lets start with the @{" Tutorial " LINK Tut1}. @ENDNODE @NODE Tut1 "3. Tutorial" @{" 0. Story " LINK Tut1-Story} @{" 1. Preface " LINK Tut1-Teil0} @{" 2. Part 1 " LINK Tut1-Teil1} @{" 3. Part 2 " LINK Tut1-Teil2} @{" 4. Part 3 " LINK Tut1-Teil3} @{" 5. Part 4 " LINK Tut1-Teil4} @{" 6. Part 5 " LINK Tut1-Teil5} @{" 7. Part 6 " LINK Tut1-Teil6} @{" 8. Part 7 " LINK Tut1-Teil7} @{" 9. Part 8 " LINK Tut1-Teil8} @{" 10. Part 9 " LINK Tut1-Teil9} @{" 11. Script " LINK Tut1-Script} @ENDNODE @NODE Tut1-Story "Story" Starting with 2 x 60 24Bit-Pictures "CHA" and "CHB" we want to create some animations using fading and special effects. Story: -"CHA" will be wiped into the picture -"CHA" will be played quite normal -"CHA" will be roteted (360 -"CHA" will be twirled -"CHB" flies into the picture in a smalle size -"CHB" will be scaled to full size -"CHA" will be fadet out and a little bit displaced -"CHB" will be played quite normal -"CHB" will be fadet out All session- and process files are stored in the same called directorys. To generate the needed animations you have just to: (f.i. animation "chab_wipe.yafa) - use the graphical user interface: *converter: load the session file "chab_wipe.session" *converter: press the "Convert" gadget (or just press ) (the needed process file "chab_wipe.process" will be loaded by the sesssion file without user interaction.) But we want to learn how the processor works. That`s why you should make the animations yourself, following this tutorial! If you managed that you will know how to work with WIldfire and it will be eas for you to produce effects yourself! So first read the @{" Preface " LINK Tut1-Teil0}! @ENDNODE @NODE Tut1-Teil0 "Preface" If you work with the small version (HALVE_SIZE) then you can follow the steps written in the tutorial exactly. But if you want to use the full size (NORMAL_SIZE) version, you have to change the path names from wftut:halve_size/ ind wftut:normal_size/. Further on you have to use the sizes and coordinates written in []. Your actions are written in {} brackets. Both animations we are dealing with consits of 60 frames each. So the timedependent coordinates end with 60 for the last frame. First of all start Wildfire. {wf } Afterwards open the preferences window. {PREFERENCES} Change to the paths-selector. {PATHS} Use the following paths: {ANIMATIONS wftut:halve_size/results/} {PICTURES wftut:halve_size/frames/} {YAFA-PLAYER wf:YP} Save the preferences. {CLOSE Filenames/Drawers} {SAVE Prefs} {CLOSE Prefs} Now all needed selections are made, so lets come to @{" Part 1 " LINK Tut1-Teil1}. @ENDNODE @NODE Tut1-Teil1 "Part 1" cha_wipe.yafa Open the converter window. {CONVERTER} If you want to do it the easy way just load the session file! {LOAD Session cha_wipe.session} All settings are made automaticly, you jut need to start converting. {CONVERT} You can do this for all 9 animations but ... We want to get to know how the program works, so ... we will NOT use this files but do everything ourselves! Select Single Pictures as Input Type. {INPUT TYPE Pictures} Select YAFA Animation as Output Type. {OUTPUT TYPE YAFA Animation} Select the following YAFA Options: {RELATED OPTIONS} {IMAGE-DATA RAW} {COLORMAP UNLOCKED} {FORCE TIMECODES OFF} {SPEED 2} [3] {POST-COMPRESSION XPK} {Compressor FAST} {DELTA-COMPRESSION ByteBR} {Uncompressed Frames 1} {UC-Mode Delta} Close the YAFA-Options. {CLOSE YAFA-Options} Select {PREVIEW Screen} and {PROCESSOR Enabled} {INPUT RELATED OPTIONS} Add the directory with the 60 pictures for the CHA anim: {ADDDIR wftut:halve_size/frames/chA} {CLOSE Related Options} Choose the name for the animation: {OUTPUT Browse} {wftut:halve_size/results/cha_wipe.yafa} Open the {PROCESSOR} First of all we want the Animation CHA to fly from the left side into the screen. Furthermore we want to fade this animation. So we create a black screen as background. {ADD CREATEIMAGE} Now we edit create-image. {DOUBLECLICK CreateImage} (in the list) or {EDIT} Now we make the following selections: {WIDTH 176} [352] ... width of the Animation {HEIGHT 144} [288] ... height of the Animation {OUTPUT Temp1} ... buffer for the black picture Now we select for all 4 colors the rgb-values 0. The color-gadgets will be displayed in their right colors if you work on an 256 color-screen. Otherwise you will NOT see their right colors. Just look at the values, they have to be 0,0,0. ************************************************************ Note: To get the needed coordinates in a very easy way just do the following things: f.i. add CreateImage effect. Select the effect. (like described some lines {OPEN Single-Picture-Process} {INPUT wftut:halve_size/frames/cha/pic.0001} {APPLY DIMENSIONS} Using Apply Dimensions the sizes of the picture will be used for the effect. Thats for instance the size for the CreateImage effect and the centre coordinates for the twirl and rotate effect. ************************************************************ {CLOSE CreateImage-Options} Now we create some variables. {VARIABLES} {ADD left} {ADD mix} {DOUBLECLICK left} We are looking at the envelopes-window. Let`s add two points: {ADD PNT Klick into the window} {ADD PNT Klick into the window} The change the position of the first poin we select it: {KLICK on the 1. point} {X = 0} (just write it into the correspondending gadget) {Y = -160.00} Select the second point. {KLICK on the 2. point} {X = 5} {Y = 0} Select the 3. point. {KLICK on the 3. point} {X = 60} {Y = 0} Choose bezier as interpolation method. {INTERPOLATION bezier} For the following variables you follow these steps exactly. I use a short form of writing the down. Have a look at these examples for the variables you created a minute ago. Variable: left Points: 3 Nr. 1: 0, -160 Nr. 2: 5, 0 Nr. 3: 60, 0 Interpolation: bezier Lets come to the second variable. 2. Variable: Variable: mix Points: 3 Nr. 1: 0, 0 Nr. 2: 20, 100 Nr. 3: 60, 100 Interpolation: bezier {CLOSE Envelope} {CLOSE Variables} Now we add a compose effect: {ADD COMPOSE} {EDIT compose} {BACKGROUND Temp1} ... generated picture in Temp1 {FOREGROUND Stream} ... Animation in Stream {DESTINATION Stream} ... destination -> Animation {ALPHA none} ... Alpha Channel {GENLOCK none} {LEFT left} ... Using the gadget VAR you choose our created variable left as the value for the LEFT position of the animation. Within our 60 frames the front animation will move from the left side (-160) into the screen (0). {TOP 0} ... The animation will stay on the same heigth all the time. {MIX mix} ... Within the 60 frames we change the value of mix from 0 to 100. Mix 100 means you will only see the pictures in front of the background pictures - and these are the frames of the animation! {CENTREX off}... pics will NOT be centred {CENTREY off}... pics will NOT be centred {MODE Color} {DITHERING Floyd} {DEPTH 5} Now we made all settings, so press the CONVERT gadget in the converter window! {CONVERT} Depending on the speed of your computer you may drink a cup of coffee or just look how the animation is created. The 60 24-Bit pictures will be wiped, fadet, ditherd and saved in 5-Bit. From the @{" Part 2 " LINK Tut1-Teil2} I will tell you only the important things as you should know by know how the whole thing is working! @ENDNODE @NODE Tut1-Teil2 "Part 2" cha.yafa Now we create an animation without effects. So first remove all the effects form the processor-list. {PROCESSOR CLEAR} The following settings stay unchanged for the whole tutorial! {MODE Color} {DITHERING Floyd} {DEPTH 5} The input single-pictures stay the same as in part 1! Do not forget to change the output name into: {wftut:halve_size/results/cha.yafa} So lets start the converting! {CONVERT} @{" Part 3 " LINK Tut1-Teil3} @ENDNODE @NODE Tut1-Teil3 "Part 3" cha_rotate.yafa Now the CHA Animation will be rotated. Output-Name: {wftut:halve_size/results/cha_rotate.yafa} Variable: rotate Points: 2 Nr. 1: 0, 0 ... Start 0 Nr. 2: 60, 360 ... end 360 Interpolation: linear Let`s add a rotate effect in the processor: {ADD ROTATE} Make the following selections: {INPUT Stream} ... Input pictures {OUTPUT Stream} ... Output animation {CENTREx 88} [176] ... Centre of the picture. To get the centre use a calculator or: {SINGLE Picture} {BROWSE picture for the 60 CHA-picture} {APPLY DIMENSIONS} and so you get the centre-settings in the easy way! {CENTREY 72} [144] {RADIUS 120} [220] ... Radius for rotating {AMOUNT rotate} ... amount in degrees {ZOOM 1} ... zoom amount After this we can start the converting! Now come to @{" Part 4 " LINK Tut1-Teil4}... @ENDNODE @NODE Tut1-Teil4 "Part 4" cha_twirl.yafa Lets use the cool twirl effect. (do not forget the output name!) {wftut:halve_size/results/cha_twirl.yafa} Variable: rotate Points: 5 Nr. 1: 0, 0 ... Start 0 Nr. 2: 20, 100 Nr. 2: 30, 210 Nr. 2: 40, 100 Nr. 2: 60, 0 ... End 0 Interpolation: spline We add the twirl effect in the processor: {ADD TWIRL} We choose the following settings: {INPUT Stream} ... Input Pictures {OUTPUT Stream} ... Output animation {FALLOFF out} ... Direction of more power {CENTREX 88} [176] ... centre of the pictures {CENTREY 72} [144] {RADIUS 150} [220] ... twirl-radius {AMOUNT rotate} ... degrees {POWER 1} ... Power stays the same {ZOOM 1} ... zoom-amount The twirl effect is very time-consuming. Start the converting and if you have a slow amiga just drink a can of coffee :-) After this interesting effect we go on with @{" Part 5 " LINK Tut1-Teil5}. @ENDNODE @NODE Tut1-Teil5 "Teil5" chab_wipe.yafa Now, for the first time, we will see two animations on the screen. CHA will be played in the background and CHB will be moved from the top left corner to the middle of the screen and zoomed to halve of their size. {wftut:halve_size/results/chab_wipe.yafa} Variable: breite Points: 2 Nr. 1: 0, 0 ... start-width 0 Nr. 2: 60, 88 [176] ... end-width 88 (176/2) Interpolation: linear Variable: hoehe Points: 2 Nr. 1: 0, 0 ... start-height 0 Nr. 2: 60, 72 [144] ... end-height 72 (144/2) Interpolation: linear Variable: left Points: 2 Nr. 1: 0, 0 ... start left Nr. 2: 60, 44 [88] ... end in the middle (coordinate of the left side of the animation) Interpolation: linear Variable: top Points: 2 Nr. 1: 0, 0 ... start at the top Nr. 2: 60, 36 [72] ... end in the middle Interpolation: linear Now we add the following effects {ADD LOADIMAGE} {ADD SCALE} {ADD COMPOSE} We make the following selections: Loadimage: {SEQUENCE wftut:halve_size/frames/chB/pic} {OUTPUT Temp1} {REPEAT AT 60} This command loads the file called 'pic.xxxx' with xxxx as the picture of the animation which is generated. So if the processor generates the first picture of the anim LOADIMAGE will load pic.0001. For pic 60 of the anim pic.0060 will be loaded. With repeat you choose which is the last picture. Afterwards LOADIMAGE will restart the index with 1. We use the buffer Temp1 for loading. With the 8 Buffers and the Strem we can combine 9 animations in an very easy way! Scale: {INPUT Temp1} ... input picture {OUTPUT Temp1} ... Output picture {WIDTH breite} ... width of the picture {HEIGHT hoehe} ... height of the picture {TYPE pixels} ... Values in Pixel {ASPECT ignore} ... Aspect will be ignored The temp-picture from the CHB anim will be scaled to the size we set in the variables "breite" and "hoehe". Compose: {BACKGROUND Stream} ... backgrund pictures from animation CHA {FOREGROUND Temp1} ... foregrund pictures from animation CHB {DESTINATION Stream} ... output to the Stream {ALPHA none} ... Alpha chanal {LEFT left} ... left Position {TOP top} ... top oben {MIX 100} ... Mix = 100 ... you see only the anim in front! The background of the animation CHB is black. We want the background of the CHB anim to be masked out, so we see the anim CHA in the background. {CENTREX off} ... pics will NOT be centred {CENTREY off} ... pics will NOT be centred {GENLOCK SingleColor} ... you can see through one color {ALL RGB-VALUES 0} ... we choose the black color! Ready, steady, convert! Let`s move to @{" Part 6 " LINK Tut1-Teil6}. @ENDNODE @NODE Tut1-Teil6 "Part 6" chab_scale.yafa This animation part is almost like the chab_wipe.yafa anim! Only the size and position of the chb pictures differ! {wftut:halve_size/results/chab_scale.yafa} Variable: breite Points: 2 Nr. 1: 0, 88 [176] ... halve size at the start Nr. 2: 60, 176 [352] ... full size at the end! Interpolation: linear Variable: hoehe Points: 2 Nr. 1: 0, 72 [144] ... halve size at the start Nr. 2: 60, 144 [288] ... full size at the end! Interpolation: linear Variable: left Points: 2 Nr. 1: 0, 44 [88] ... Start -> CHB centred Nr. 2: 60, 0 ... End -> CHB left Interpolation: linear Variable: top Points: 2 Nr. 1: 0, 36 [72] ... Start -> CHB centred Nr. 2: 60, 0 ... End -> CHB top Interpolation: linear Now add the following effects: {ADD LOADIMAGE} {ADD SCALE} {ADD COMPOSE} Make the following selections: Loadimage: {SEQUENCE wftut:halve_size/frames/chB/pic} {OUTPUT Temp1} {REPEAT AT 60} Scale: {INPUT Temp1} ... input picture {OUTPUT Temp1} ... Output picture {WIDTH breite} ... width {HEIGHT hoehe} ... height {TYPE pixels} ... Values in Pixel {ASPECT ignore} ... Aspect will be ignored Compose: {BACKGROUND Stream} {FOREGROUND Temp1} {DESTINATION Stream} {LEFT left} {TOP top} {MIX 100} {CENTREX off} ... pics will NOT be centred {CENTREY off} ... pics will NOT be centred {GENLOCK SingleColor} {ALL RGB-VALUES 0} Start CONVERT! Do you feel it? Move on to @{" Part 7 " LINK Tut1-Teil7}. @ENDNODE @NODE Tut1-Teil7 "Part 7" chab_fade.yafa Both animations are now full size. In front is chb. We can look through the background of chb and see cha. Cha will now be fadet out and a little bit displaced. {wftut:halve_size/results/chab_fade.yafa} Variable: probability Points: 3 Nr. 1: 0, 0 ... probability for displacing a point Nr. 2: 59, 0 Nr. 3: 60, 100 Interpolation: bezier Variable: brightness Points: 3 Nr. 1: 0, 0 ... brigthness of CHA. Nr. 2: 59, -10 Nr. 3: 60, -60 Interpolation: bezier Variable: radius Points: 3 Nr. 1: 0, 0 ... radius within the points will be displaced Nr. 2: 60, 20 Interpolation: linear We add the following effects ... {ADD LOADIMAGE} {ADD DISPLACE} {ADD BALANCING} {ADD COMPOSE} ... and make these selections: Loadimage: {SEQUENCE wftut:halve_size/frames/chB/pic} {OUTPUT Temp1} {REPEAT AT 60} Displace: {INPUT Stream} ... input Pictures of Anim CHA {OUTPUT Stream} ... output Stream {RADIUS Radius} ... displace-radius {PROBABILITY probability} ... displace probability {SEED probability} ... start value for randomize Balancing: {INPUT Stream} ... input picture {OUTPUT Stream} ... output picture {alles auf 0} {BRIGHT brightness} ... brightness of anim CHA Compose: {BACKGROUND Stream} {FOREGROUND Temp1} {DESTINATION Stream} {LEFT 0} {TOP 0} {MIX 100} {CENTREX off} ... pics will NOT be centred {CENTREY off} ... pics will NOT be centred {GENLOCK SingleColor} {ALL RGB-VALUES 0} After this settings we start converting. Let`s come to @{" Part 8 " LINK Tut1-Teil8}. @ENDNODE @NODE Tut1-Teil8 "Part 8" chb.yafa The animation will be generated without effects. {PROCESSOR CLEAR} The processor settings stay the same. {MODE Color} {DITHERING Floyd} {DEPTH 5} We have to use new INPUT-SINGLE PICTURES, as we don`t need the cha pictures anymore! {REMOVE RANGE} There should be no more entries. Now ... {ADDDIR wftut:halve_size/frames/chB} Select ... {wftut:halve_size/results/chb.yafa} as output name and convert. Now you reached the last part, @{" Part 9 " LINK Tut1-Teil9}. @ENDNODE @NODE Tut1-Teil9 "Part 9" chb_fade.yafa The animation CHB will be fadet out! {wftut:halve_size/results/chb_fade.yafa} Variable: brightness Points: 3 Nr. 1: 0, 0 ... brightness of animation CHB. Nr. 2: 59, -10 Nr. 3: 60, -60 Interpolation: bezier In the processor we ... {ADD BALANCING} ... and make the following selections Balancing: {INPUT Stream} ... input picture {OUTPUT Stream} ... Output picture {alles auf 0} {BRIGHT brightness} ... Helligkeit der Anim CHA Now CONVERT. Congratulations! You just generated all the needed animations! Now lets add a small @{" Script " LINK Tut1-Script} to play the animations. @ENDNODE @NODE Tut1-Script "Script" We start the editor: {EDITOR} We add all the generated animations to the list. {ADD cha_wipe.yafa} {ADD cha.yafa} {ADD cha_rotate.yafa} {ADD cha_twirl.yafa} {ADD chab_wipe.yafa} {ADD chab_scale.yafa} {ADD chab_fade.yafa} {ADD chb.yafa} {ADD chb_fade.yafa} Using INFO we make some settings for every animation: {DISPLAY Zoomed} 2x2 zooming of the anims, or not. {BUFFERS 4} only 4 buffers, so we dont use too much memory Choose these settings for all animations. Now use {PLAY ALL} for playing the animations. Press {AMIGA M} and look at the memory. You should have some empty fast-memory, otherwise you should change your settings and use only 3 buffers for every animation! The zooming, decrunching etc. works faster in the FAST memory! Lets save the project! {PROJECT wftut:halve_size/Wildfire.prj} {SAVE} With the external @{" YAFA " link yp.guide/MAIN} Player we can now play this animations every time we want. Wildfire is not necessary for playing the animations! YP (the player) can be downloaded from the internet by everyone! {YP -batch wftut:halve_size/Wildfire.prj} Now you saw how to wor with some important functions of Wildfire. For learning more about this great program read the documenation and test the great possibilities of it! Thank you for using this tutorial! @ENDNODE @remark /*************************************************************/ @remark /* @remark Demos @remark */ @remark /*************************************************************/ @node Demos W K - A r t w o r k s in cooperation with since april 92 . ___ _ - the immortal force - . : /\ _ _ _ :_ __ ___ _ ___/| /_ \_______/\_____________/\_____/|____________/\ /\ | / \ \ __/ \ / ____/ .__|__ _ / / \ |/ \ \_ \/ \_____/.__/ \ | | / : / / \_/ \ \ .___/ | / \ |\/ |__/_ ___ / \ / / | | \ / \ |/ : \ .oO\ _____|\____/\_ /\_____|Oo\ _______/_______|\ _____/___ _ \/__ _ : \/_ :-Z!\/_ _ : : \/__ _ ----------------------------------------------------------------------------- INFECT A PART OF LIFE ELEMENTS - A RELIGION CAN'T DIE ! @{b} The following releases were made using Wildfire: @{ub} @{" Dataworld 1 " link dw1} @{" Wild Summer " link ws1} @{" Dataworld 2 " link dw2} @endnode @node dw1 Dataworld was released at The Party 1995 in Fredericia/Denmark. It finished second in the Wild Competition - a competition where no Hardware restrictions were given. With only 70 MB of (hard/cd)diskspace you will get a 10 MINUTE-FULL-SCREEN-VIDEO-SHOW that just needs an standard A1200 with 4 MB of Fast Ram to run. Dataworld consists of over 30 @{" YAFA " link yp.guide/MAIN} animations, all linked smoothly together using the great @{" Wildfire " link WildFire.guide/MAIN}. With the @{" YAFA " link yp.guide/MAIN} player all the animations are played without interruption, even on a standard 4x CD rom! Dataworld can be found on: Aminet CD 11 (everything archived) MagnaMedia Amiga Magazin CD 5/6 96 (run from cd) CU amiga coverdisk 04/96 (run from cd) Scene Storm CD 1 (run from cd, use the fix IFT-SFIX.lha) Remember to use the latest @{" YAFA " link yp.guide/MAIN} player on your amiga! You can get it from the Aminet or from different coverdisks. Dataworld is copyrighted to: WK-Artworks (animations, Wildfire concept) Smack/Infect (@{" YAFA " link yp.guide/MAIN} concept) DJ Mellow-Noise/Infect (music) Eksec/Infect (executive producing) @endnode @node ws1 WiLD SuMMeR was released at `The Summer Party 96` in Denmark. It finished second in the Wild Competition - a competition without any Hardware-restrictions. With only 30 MB Place on CD/HD you`ll get a 4 Minutes full-screen Video which runs on an - todays - standard A1200 (at least 4 MB Fast). WilD SuMMeR consists of over 20 @{" YAFA " link yp.guide/MAIN} Animations, which were created using the great Wildfire. Using the latest @{" YAFA " link yp.guide/MAIN} player you can watch the show even from a ZIP-Drive or a 4X Speed CD-Rom without any gaps between the animations. WiLD SuMMeR is available on: Aminet CD 13 (all animations archived) CU Amiga Cover CD (run from cd) MagnaMedia Amiga Magazin CD 3/4 97 (run from cd) WiLD SuMMeR copyrighted to: WK-Artworks (Animations, Wildfire concept) Smack/Infect (@{" YAFA " link yp.guide/MAIN} concept) DJ Mellow-Noise/Infect (Music) Eksec/Infect (Executive Producing) @endnode @node dw2 Dataworld 2 was released at The Party 1996 in Aars/Denmark. With 150 MB of (hard/cd)diskspace you will get a 12 MINUTE-FULL-SCREEN-VIDEO-SHOW that just needs an standard A1200 with 4 MB of Fast Ram to run. Dataworld 2 consists of over 30 @{" YAFA " link yp.guide/MAIN} animations, all linked smoothly together using the great @{" Wildfire " link WildFire.guide/MAIN}. With the @{" YAFA " link yp.guide/MAIN} player all the animations are played without interruption, even on a standard 6x CD rom! Dataworld 2 can be found on: MagnaMedia Amiga Magazin CD 3/4 97 (run from cd) Remember to use the latest @{" YAFA " link yp.guide/MAIN} player on your amiga! You can get it from the Aminet or from different coverdisks. Dataworld 2 is copyrighted to: WK-Artworks (animations, Wildfire concept) Smack/Infect (@{" YAFA " link yp.guide/MAIN} concept) DJ Mellow-Noise/Infect (music) Eksec/Infect (executive producing) @endnode @remark /*************************************************************/ @remark /* @remark Technical stuff @remark */ @remark /*************************************************************/ @node Technical @{b}Technical stuff: @{ub} Wildfire is a very complex program written in pure ANSI-C. Because most of the Amiga-compilers are not capable to produce fast and small code from the source code consisting of about 160 modules (including all PlugIns) we decided to use GCC. One of these other "compilers" was even not able to *translate* some portions of the ANSI-C-code - which is really poor. GCC on the other side compiles all 160 modules producing only 6 warnings. The GUI was completely designed using GadToolsBox, Wildfire 2.96 has 123 windows which contain 1644 gadgets (including all PlugIns). This complexity makes it impossible to use one of these "intelligent GUI-designers" because of the large overhead they produce. The main program was always designed for speed and not to conserve memory (You can buy computers, memory, ...- but no time). All 3d-operators are optimized to use a fpu. That means they operate fast on systems with fpu but may be worthless on other systems. Because most floating-point-operations on the 060-processor are faster than integer-manipulations I decided to use this way. Unlike to the 2d-operators which make use of cryptic integer-manipulations like luxa[j]=(WORD)((((dx2*ca+dy2*sa+VPREC2)>>SPREC)+cx+VPREC2)>>SPREC); (this performs a rotation and is no joke) the code remains very readable and is easy to extend. As you can see we have put a lot work into this project, @{b}PLEASE DON'T USE OR SPREAD PIRATE COPIES !@{ub} @endnode